Ticket #112 (new enhancement)

Opened 2 years ago

Last modified 3 months ago

Support for Indic OpenType Font rendering with ICU 'Shaping'

Reported by: springmeyer Owned by: artem
Priority: major Milestone: 0.8.0
Component: Core Library Version: SVN Trunk
Severity: Normal Keywords: OpenType, Freetype, fonts, unicode
Cc: Patch Needs Improvement: no
Needs Docmentation: no Has Patch?: no
Design Decision Needed: no

Description (last modified by springmeyer) (diff)

Arabic font rendering with ICU is clearly supported, as I can see the routines here:

http://trac.mapnik.org/browser/trunk/include/mapnik/font_engine_freetype.hpp#L257 and the news here: http://mapnik.org/news/2008/feb/20/mapnik_unicode/

Indic font rendering apparently needs its own special routines which are discussed in the context of OpenType? fonts here:

http://trac.osgeo.org/mapserver/ticket/2591

Context: when gargi.ttf is configured based on this readme: http://mapnik-utils.googlecode.com/svn/example_code/fonts/README.txt the result is the same as the graphics attached to the mapserver ticket.

Thus, enhanced support for OpenType? Indic fonts is highly desirable within Mapnik.

Attachments

problem_example.png (47.7 kB) - added by springmeyer 2 years ago.
Screen shot of text, before and after rendering
telugu-example.png (47.3 kB) - added by pavithran 3 months ago.
rendering for telugu

Change History

Changed 2 years ago by springmeyer

  • priority set to major

Changed 2 years ago by springmeyer

See Ticket #19 for context on why ICU can solve this problem.

Changed 2 years ago by springmeyer

  • summary changed from Support for Indic OpenType Font rendering to Support for Indic OpenType Font rendering with ICU 'Shaping'

Changed 2 years ago by springmeyer

  • has_patch unset
  • patch_need_improvement unset
  • need_documentation unset
  • design_decision_needed unset

I tried applying the patch from http://lists.openstreetmap.org/pipermail/dev/2008-October/012005.html

and I've attached a graphic comparing the raw text in the postgres insert of sample indic data (from the linked mapserver ticket) to the rendered text. I'm not sure which is right and which is wrong, so feedback is welcome.

Changed 2 years ago by springmeyer

Screen shot of text, before and after rendering

Changed 2 years ago by springmeyer

data and test case script's to produce the previously attached image are here: http://mapnik-utils.googlecode.com/svn/trunk/tutorials/fonts/

Changed 21 months ago by springmeyer

The link has now moved for the testcase to:

http://mapnik-utils.googlecode.com/svn/sandbox/indic_fonts/

Changed 17 months ago by springmeyer

  • milestone changed from 1.0.0 to 0.7.0

Changed 17 months ago by springmeyer

  • description modified (diff)

Changed 3 months ago by pavithran

rendering for telugu

Changed 3 months ago by pavithran

rendering for telugu

Town/city names in India can't be localised because of this bug . This bug affects almost every town/city in northern india where hindi language is predominantly used .

I have attached an example showing proper rendering of telugu . We used to have these issues with pango long back . They were solved by installing ttf-indic-fonts . Pango rendering issues are long gone and almost all major rendering engines render indic fonts .

Changed 3 months ago by pavithran

ICU was rendering telugu fonts ( atleast to some extent) as per http://bugs.icu-project.org/trac/attachment/ticket/6113/gautami.pdf for the version 3.6 though there is a slight positioning bug http://bugs.icu-project.org/trac/ticket/6113

Changed 3 months ago by jburgess777

I'm adding a comment at the request of pvai on IRC (pavithran), I think this information is known already but is not mentioned in this bug. I believe the underlying issue here is that Mapnik is rendering the string one character at a time in order to make the characters follow along the path. These Indic languages use ligatures where the rendering depends on multi-character sequences and can not be correctly rendered one character at a time, http://en.wikipedia.org/wiki/Typographic_ligature

For reference, the location which pavithran supplied can be seen at: http://www.openstreetmap.org/?mlat=17.25&mlon=80.15&zoom=12

Note: See TracTickets for help on using tickets.