hb-graphite now no longer has -ve advances within clusters. Fix infinite loop in tag_to_script(). python fixed to use tag_to_script and allow hbtestfont to be passed font files, where fontconfig knows about them.
This commit is contained in:
parent
e5bed0a37f
commit
3109a86add
|
@ -41,7 +41,7 @@ cdef extern from "hb-language.h" :
|
||||||
char * hb_language_to_string(hb_language_t language)
|
char * hb_language_to_string(hb_language_t language)
|
||||||
|
|
||||||
cdef extern from "hb-ot-tag.h" :
|
cdef extern from "hb-ot-tag.h" :
|
||||||
hb_script_t hb_ot_tag_to_script (char *sname)
|
hb_script_t hb_ot_tag_to_script (hb_tag_t tag)
|
||||||
|
|
||||||
cdef extern from "hb-buffer.h" :
|
cdef extern from "hb-buffer.h" :
|
||||||
ctypedef struct hb_buffer_t :
|
ctypedef struct hb_buffer_t :
|
||||||
|
@ -141,7 +141,7 @@ cdef class buffer :
|
||||||
cdef hb_script_t scriptnum
|
cdef hb_script_t scriptnum
|
||||||
|
|
||||||
language = hb_language_from_string(lang)
|
language = hb_language_from_string(lang)
|
||||||
scriptnum = hb_ot_string_to_script(script)
|
scriptnum = hb_ot_tag_to_script(hb_tag_from_string(script))
|
||||||
hb_buffer_set_script(self.buffer, scriptnum)
|
hb_buffer_set_script(self.buffer, scriptnum)
|
||||||
hb_buffer_set_language(self.buffer, language)
|
hb_buffer_set_language(self.buffer, language)
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,11 @@ p.add_option('-d', '--debug', action='store_true', help="Output trace info")
|
||||||
p.add_option('--nogui', action='store_true', help="Don't display a gui")
|
p.add_option('--nogui', action='store_true', help="Don't display a gui")
|
||||||
(opts, args) = p.parse_args()
|
(opts, args) = p.parse_args()
|
||||||
|
|
||||||
fpat = opts.font + ":weight="
|
if opts.font.lower().endswith(".ttf") :
|
||||||
|
fpat = ":file="
|
||||||
|
else :
|
||||||
|
fpat = ""
|
||||||
|
fpat += opts.font + ":weight="
|
||||||
fpat += "bold" if opts.bold else "medium"
|
fpat += "bold" if opts.bold else "medium"
|
||||||
fpat += ":slant="
|
fpat += ":slant="
|
||||||
fpat += "italic" if opts.italic else "roman"
|
fpat += "italic" if opts.italic else "roman"
|
||||||
|
|
|
@ -291,8 +291,8 @@ hb_graphite_shape (hb_font_t *font,
|
||||||
pPosition->y_offset = iGlyph->yOffset() - curradvy;
|
pPosition->y_offset = iGlyph->yOffset() - curradvy;
|
||||||
pPosition->x_advance = pPosition->x_offset + iGlyph->advanceWidth();
|
pPosition->x_advance = pPosition->x_offset + iGlyph->advanceWidth();
|
||||||
pPosition->y_advance = pPosition->y_offset + iGlyph->advanceHeight();
|
pPosition->y_advance = pPosition->y_offset + iGlyph->advanceHeight();
|
||||||
// if (pPosition->x_advance < 0)
|
if (pPosition->x_advance < 0 && iGlyph->logicalIndex() != iGlyph->attachedClusterBase()->logicalIndex())
|
||||||
// pPosition->x_advance = 0;
|
pPosition->x_advance = 0;
|
||||||
curradvx += pPosition->x_advance;
|
curradvx += pPosition->x_advance;
|
||||||
curradvy += pPosition->y_advance;
|
curradvy += pPosition->y_advance;
|
||||||
// fprintf(stderr, "%d@(%f, %f)+(%f, %f)\n", iGlyph->glyphID(), iGlyph->origin(), iGlyph->yOffset(), iGlyph->advanceWidth(), iGlyph->advanceHeight());
|
// fprintf(stderr, "%d@(%f, %f)+(%f, %f)\n", iGlyph->glyphID(), iGlyph->origin(), iGlyph->yOffset(), iGlyph->advanceWidth(), iGlyph->advanceHeight());
|
||||||
|
|
|
@ -161,6 +161,7 @@ hb_ot_tag_to_script (hb_tag_t tag)
|
||||||
while (*p)
|
while (*p)
|
||||||
if (tag == *p)
|
if (tag == *p)
|
||||||
return i;
|
return i;
|
||||||
|
p++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return HB_SCRIPT_UNKNOWN;
|
return HB_SCRIPT_UNKNOWN;
|
||||||
|
|
Loading…
Reference in New Issue