gecko-dev/gfx/cairo/atsui-empty.diff

58 строки
1.8 KiB
Diff
Исходник Обычный вид История

Index: cairo/src/cairo-atsui-font.c
===================================================================
RCS file: /cvsroot/mozilla/gfx/cairo/cairo/src/cairo-atsui-font.c,v
retrieving revision 1.5
diff -u -8 -p -r1.5 cairo-atsui-font.c
--- cairo/src/cairo-atsui-font.c 4 Jun 2005 12:19:44 -0000 1.5
+++ cairo/src/cairo-atsui-font.c 28 Jun 2005 18:53:10 -0000
@@ -248,39 +248,42 @@ _cairo_atsui_font_text_to_glyphs(void *
cairo_atsui_font_t *font = abstract_font;
size_t i;
OSStatus err;
ATSUTextLayout textLayout;
ATSLayoutRecord *layoutRecords;
ItemCount glyphCount, charCount;
UniChar *theText;
- err = ATSUCreateTextLayout(&textLayout);
-
-#if 1
+ // liberal estimate of size
charCount = strlen(utf8);
+ if (charCount == 0) {
+ *glyphs = NULL;
+ *num_glyphs = 0;
+ return CAIRO_STATUS_SUCCESS;
+ }
+
// Set the text in the text layout object, so we can measure it
theText = (UniChar *) malloc(charCount * sizeof(UniChar));
+#if 1
for (i = 0; i < charCount; i++) {
theText[i] = utf8[i];
}
#endif
#if 0
- // Set the text in the text layout object, so we can measure it
- charCount = strlen(utf8);
- theText = (UniChar *) malloc(charCount * sizeof(UniChar));
-
size_t inBytes = charCount, outBytes = charCount;
iconv_t converter = iconv_open("UTF-8", "UTF-16");
charCount = iconv(converter, utf8, &inBytes, theText, &outBytes);
#endif
+ err = ATSUCreateTextLayout(&textLayout);
+
err = ATSUSetTextPointerLocation(textLayout,
theText, 0, charCount, charCount);
// Set the style for all of the text
err = ATSUSetRunStyle(textLayout,
font->unscaled_style, kATSUFromTextBeginning, kATSUToTextEnd);