[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft-devel] Seams with disjoint composite

From: Werner LEMBERG
Subject: Re: [ft-devel] Seams with disjoint composite
Date: Thu, 07 Jun 2012 23:47:33 +0200 (CEST)

>> It depends on a flag in the glyph's data, ROUND_XY_TO_GRID, if the
>> subglyph's offset is given as xy values.  However, for the
>> particular DejaVu glyph, the subglyphs all have a zero offset, but
>> point coordinates are rounded to integers anyways as part of the
>> normal rasterization process.
> Right.  So I guess my question is, why are they rounded differently?

I spoke too hastily since I hadn't looked closely enough at the

It's a bug in the font.  The glyph ▟ consists of three elements:

  <TTGlyph name="uni259F" xMin="-20" yMin="-512" xMax="1593" yMax="1576">
    <component glyphName="uni2596" x="0" y="0" flags="0x1004"/>
    <component glyphName="uni2597" x="0" y="0" flags="0x1004"/>
    <component glyphName="uni259D" x="0" y="0" flags="0x1004"/>

Note that the 4 in the flags value 0x1004 means ROUND_XY_TO_GRID.

Now the components.  The first one is a real glyph:

  <TTGlyph name="uni2596" xMin="-20" yMin="-512" xMax="786" yMax="532">
      <pt x="-20" y="-512" on="1"/>
      <pt x="-20" y="532" on="1"/> 
      <pt x="786" y="532" on="1"/> 
      <pt x="786" y="-512" on="1"/>

The other two, however, are not:

  <TTGlyph name="uni2597" xMin="787" yMin="-512" xMax="1593" yMax="532">
    <component glyphName="uni2596" x="807" y="0" flags="0x1004"/>

  <TTGlyph name="uni259D" xMin="787" yMin="532" xMax="1593" yMax="1576">
    <component glyphName="uni2596" x="807" y="1044" flags="0x1004"/>

Both have the flag 0x1004, meaning that the offsets are rounded to the

The real solution is to redefine uni259F (and all other similar block
characters) having uni2596 three times as subglyphs, with proper
offsets, and with flags values 0x1000.  I've justed tested it: no

I wonder how such glaring problems can be part of one of the most used
free fonts.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]