summaryrefslogtreecommitdiff
path: root/pango/pangocairo-win32font.c
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Drop cairo metrics implementation"Khaled Hosny2019-08-141-0/+1
| | | | | | This reverts commit c5d86c368128bb9a0be913829da79649fb81f486. Closes #409
* Drop cairo metrics implementationMatthias Clasen2019-08-121-1/+0
| | | | We can use the hb-based implementation in pangofc-font.c.
* cairo win32: Set height in font metricsMatthias Clasen2019-07-161-4/+3
|
* Remove unused codeBehdad Esfahbod2013-03-151-25/+1
|
* Revert "Fix Win32 and CoreText cairo backends to take cairo CTM into account"Behdad Esfahbod2013-03-041-3/+0
| | | | | | | | | | | | | | | This reverts commit b359bb484bc7d27a835cfd6d9ffcaed582ebf2ae. Bug 694918 - Pango layout is rendered in wrong size if we have non-identity cairo transformation matrix I was wrong blindly copying this logic from pangocairo-fc into pangocairo-win32 and pangocairo-quartz. The reason we need the it in pangofc is because the fontsize we get back from fontconfig is multiplied by the ctm scale factor, so we undo it when loading the font. The same is NOT true about the non-fc backends, so the copying was totally wrong.
* Fix Win32 and CoreText cairo backends to take cairo CTM into accountBehdad Esfahbod2012-12-051-0/+3
|
* [cairo] Refactor common code in create_metrics_for_context()Behdad Esfahbod2010-05-041-25/+6
|
* Remove desc argument from _pango_cairo_font_private_initialize(). ReplaceBehdad Esfahbod2009-01-281-1/+1
| | | | | | | | | | | | | | | 2009-01-09 Behdad Esfahbod <behdad@gnome.org> * pango/pangocairo-atsuifont.c (_pango_cairo_atsui_font_new): * pango/pangocairo-fcfont.c (_pango_cairo_fc_font_new): * pango/pangocairo-font.c (_pango_cairo_font_private_initialize): * pango/pangocairo-private.h: * pango/pangocairo-win32font.c (_pango_cairo_win32_font_new): Remove desc argument from _pango_cairo_font_private_initialize(). Replace it with gravity, the only thing from desc we actually needed. This is in preparation for lazy loading of fonts in the pangofc fontmap. svn path=/trunk/; revision=2803
* Remove context argument from _pango_cairo_font_private_initialize().Behdad Esfahbod2009-01-281-1/+2
| | | | | | | | | | | | | | | | 2009-01-09 Behdad Esfahbod <behdad@gnome.org> * pango/pangocairo-atsuifont.c (_pango_cairo_atsui_font_new): * pango/pangocairo-fcfont.c (_pango_cairo_fc_font_new): * pango/pangocairo-font.c (_pango_cairo_font_private_initialize): * pango/pangocairo-private.h: * pango/pangocairo-win32font.c (_pango_cairo_win32_font_new): Remove context argument from _pango_cairo_font_private_initialize(). Replace it with pango_ctm and font_options, the only things from context we actually needed. This is in preparation for lazy loading of fonts in the pangofc fontmap. svn path=/trunk/; revision=2801
* Bug 563356 – The input area of firefox and the blank width after text inBehdad Esfahbod2008-12-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | 2008-12-05 Behdad Esfahbod <behdad@gnome.org> Bug 563356 – The input area of firefox and the blank width after text in gnome-menu was stretched too wide, under pango-1.22.3 * docs/tmpl/fonts.sgml: * pango/pango-impl-utils.h: * pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_create_metrics_for_context): * pango/pangocairo-win32font.c (pango_cairo_win32_font_create_metrics_for_context): * pango/pangofc-font.c (pango_fc_font_create_metrics_for_context): For approximate_char_width calculation take each char's width into account. That is, do a weighted average instead of uniform average. g_unichar_iszerowidth() chars count as 0, g_unichar_iswide() chars count 2, and the rest count as 1. Pretty much wcwidth() behavior. See bug report for rationale. svn path=/trunk/; revision=2747
* Bug 562574 – Pangocariowin32 is leaking every cairo font it ever createsBehdad Esfahbod2008-11-281-1/+5
| | | | | | | | | | | | | | | | | 2008-11-28 Behdad Esfahbod <behdad@gnome.org> Bug 562574 – Pangocariowin32 is leaking every cairo font it ever creates * pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_finalize): * pango/pangocairo-win32font.c (pango_cairo_win32_font_finalize): Finalize shared pangocairo font resources. Oops! * pango/pangocairo-font.c (_pango_cairo_font_private_finalize): Protect against multiple calls to finalize. This is practiced by the pangocairo-fcfont when a font is shutdown and then finalized. svn path=/trunk/; revision=2746
* Bug 143542 – PangoFT2Fontmap leakBehdad Esfahbod2008-08-221-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-08-22 Behdad Esfahbod <behdad@gnome.org> Bug 143542 – PangoFT2Fontmap leak * pango/fonts.c: * pango/pangoatsui.c (pango_atsui_font_finalize), (_pango_atsui_font_set_font_map): * pango/pangocairo-font.c (_pango_cairo_font_get_metrics), (_pango_cairo_font_private_get_hex_box_info): * pango/pangocairo-win32font.c (_pango_cairo_win32_font_new): * pango/pangofc-font.c (pango_fc_font_get_metrics): * pango/pangofc-fontmap.c (pango_fc_font_map_add), (_pango_fc_font_map_remove), (cleanup_font): * pango/pangowin32-fontmap.c (pango_win32_font_neww), (pango_win32_font_map_real_find_font): * pango/pangowin32.c (pango_win32_font_finalize): * pango/pangox-fontmap.c (pango_x_font_map_load_font): * pango/pangox.c (pango_x_font_new), (pango_x_font_finalize): Make the reference the font->fontmap reference weak. The code for setting the reference must look like this: g_assert (font->fontmap == NULL); font->fontmap = (PangoFontMap *) fontmap; g_object_add_weak_pointer (G_OBJECT (font->fontmap), (gpointer *) (gpointer) &font->fontmap); And releasing it like: g_assert (font->fontmap != NULL); g_object_remove_weak_pointer (G_OBJECT (font->fontmap), (gpointer *) (gpointer) &font->fontmap); font->fontmap = NULL; I have converted all fontmaps. The win32 and atsui ones can use some simple testing. The PangoFc fonts actually don't need the weakref as the fontmap already provides a similar link by itself. svn path=/trunk/; revision=2704
* Include "config.h" instead of <config.h> Command used: find -nameJohan Dahlin2008-06-221-1/+1
| | | | | | | | | | | | 2008-06-21 Johan Dahlin <jdahlin@async.com.br> * *.[ch]: Include "config.h" instead of <config.h> Command used: find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g' Rubberstamped by Behdad svn path=/trunk/; revision=2657
* Bug 485536 – underline_position can be zeroBehdad Esfahbod2007-11-301-0/+3
| | | | | | | | | | | | | | | | | 2007-11-29 Behdad Esfahbod <behdad@gnome.org> Bug 485536 – underline_position can be zero * pango/pango-utils.c (pango_cairo_quantize_line_geometry): Document that returned position may be zero. * pango/pangocairo-win32font.c (pango_cairo_win32_font_create_metrics_for_context): * pango/pangofc-font.c (get_face_metrics): Handle case of underline_position==0 after rounding. svn path=/trunk/; revision=2506
* Add is_synthetic field.Tor Lillqvist2007-06-121-269/+45
| | | | | | | | | | | | | | | | 2007-06-12 Tor Lillqvist <tml@novell.com> * pango/pangowin32-private.h (struct PangoWin32Face: Add is_synthetic field. * pango/pangowin32-fontmap.c: Implement is_synthesized. * pango/pangocairo-win32font.c * pango/pangocairo-win32fontmap.c: Update for the changes to PangoCairoFontMap and PangoCairoFont. svn path=/trunk/; revision=2347
* pango/pangowin32-private.h pango/pangowin32.c pango/pangowin32-fontcache.cTor Lillqvist2007-03-101-5/+5
| | | | | | | | | | | | | | | | | | 2007-03-10 Tor Lillqvist <tml@novell.com> * pango/pangowin32-private.h * pango/pangowin32.c * pango/pangowin32-fontcache.c * pango/pangowin32-fontmap.c * pango/pangocairo-win32font.c * pango/pangowin32.def: Move functions defined in one file and used in another to the file where used, make them static, and drop from pangowin32-private.h. Prefix all private non-static functions with underscore. Also functions used only by the pangocairo DLL are considered private. (#120195) svn path=/trunk/; revision=2213
* This change was supposed to go in the trunk before 1.16.0, but it didn'tTor Lillqvist2007-02-271-18/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2007-02-26 Tor Lillqvist <tml@novell.com> This change was supposed to go in the trunk before 1.16.0, but it didn't quite get there in time. So, to have a clear cut for this somewhat fundamental change in underlying workings (although there should be no user-visible changes), I will build and distribute Win32 binaries only starting from 1.16.1. Use wide character API for fonts on Windows. Rename functions and variables that deal with LOGFONTW structs to emphasize this. (#407315) * pango/pangowin32.c * pango/pangowin32-fontcache.c * pango/pangowin32-fontmap.c: Use LOGFONTW all over the place instead of LOGFONT, and adapt code accordingly. Use wide character Win32 API. * pango/pangowin32.c (pango_win32_font_neww): Renamed from pango_win32_font_new(), as it now takes a LOGFONTW pointer. This is a private function and can be renamed though it is exported as it is used from the pangocairo DLL. (pango_win32_font_logfont): Mention explicitly in doc comment that it returns a LOGFONTA, and recommend to use pango_win32_font_logfontw() instead. (pango_win32_font_logfontw): New function. * pango/pangowin32-fontcache.c (pango_win32_font_cache_load): Must keep this function that takes a LOGFONTA pointer as it is declared in the public header. (pango_win32_font_cache_loadw): New public function that takes a LOGFONTW pointer. * pango/pangowin32-fontmap.c (pango_win32_font_description_from_logfont): Mention explicitly in the doc comment that it takes a LOGFONTA pointer. (pango_win32_font_description_from_logfontw): New public function that takes a LOGFONTW pointer. (pango_win32_make_matching_logfontw): Rename from pango_win32_make_matching_logfont() to emphasize it takes a LOGFONTW pointer. * pango/pangowin32.h: Declare new public functions. * pango/pangowin32-private.h: Declare new private functions, drop removed ones. * pango/pangocairo-win32font.c (_pango_cairo_win32_font_new): Simplify now that we call pango_win32_make_matching_logfontw(). * pango/pangowin32.def: Add new functions, rename internal functions that now use LOGFONTW. 2007-02-26 Tor Lillqvist <tml@novell.com> Fix brokenness in the code that tries to ensure that all fonts also have italic variants. Now the code hopefully actually does what it was supposed to. (Which is not necessarily the right thing to do, though. It can be argued that we should not list synthesized italic font styles, we should just silently generate them if asked for. We don't want synthesized italic (or synthesized bold) styles showing up in the font selector. They don't show up when using a fontconfig-based Pango backend either.) (#110521) * pango/pangowin32-fontmap.c (logfont_nosize_hash, logfont_nosize_equal): Don't use the lfItalic field as such, just its nonzeroness. When being enumerated, italic fonts show up with lfItalic=255, but our code looks up italic versions of fonts by passing a key LOGFONT with lfItalic=1. (first_match): Not needed any more, see below. (ensure_italic): This is now called on the entries in the size_infos hash table, not families. The code used to randomly look for the first matching font in size_infoswith the family name being handled. (pango_win32_font_map_init): Iterate through the size_infos hash table with ensure_italic, not through the families table. * pango/pangowin32-fontcache.c (logfontw_hash, logfontw_equal): Look at just nonzeroness of lfItalic here, too. svn path=/trunk/; revision=2204
* *.c, *.h: Replace preceding sequences of 8 spaces with tabs.Behdad Esfahbod2007-01-161-8/+8
| | | | | | | | | 2007-01-16 Behdad Esfahbod <behdad@gnome.org> *.c, *.h: Replace preceding sequences of 8 spaces with tabs. svn path=/trunk/; revision=2165
* *.c, *.h: Drop trailing whitespace.Behdad Esfahbod2007-01-161-36/+36
| | | | | | | | | 2007-01-16 Behdad Esfahbod <behdad@gnome.org> *.c, *.h: Drop trailing whitespace. svn path=/trunk/; revision=2163
* Use pango_layout(_iter)?_get_line_readonly() instead ofBehdad Esfahbod2007-01-161-1/+1
| | | | | | | | | | | | | | | | 2007-01-16 Behdad Esfahbod <behdad@gnome.org> * examples/cairotwisted.c (draw_text): * pango/pangocairo-win32font.c (max_glyph_width): * pango/pangofc-font.c (max_glyph_width): * pango/pangowin32.c (max_glyph_width), (pango_win32_render_layout): * pango/pangox.c (pango_x_render_layout): Use pango_layout(_iter)?_get_line_readonly() instead of pango_layout(_iter)?_get_line(). svn path=/trunk/; revision=2146
* not only handle PANGO_GLYPH_EMPTY but also PANGO_GLYPH_UNKNOWN_FLAG. TheHans Breuer2006-06-051-1/+10
| | | | | | | | | | | | | | | | 2006-05-05 Hans Breuer <hans@breuer.org> * pango/pangocairo-win32font.c(compute_glyph_extents) : not only handle PANGO_GLYPH_EMPTY but also PANGO_GLYPH_UNKNOWN_FLAG. The latter is needed to have proper sizing of the "hex box" for missing glyphs. It also stops cairo complaining about unknown glyphs. Fixes part of bug #343796. * pango/makefile.msc : create $(PRJ_TOP)\config.h.win32. (Not changing in years does not necessarily mean it is not used) * pango/testfonts.c : make family_name survive pango_font_description_free(), it is used later on
* Bug 342525 – With PangoFc and PangoWin32, approximate digit width is notBehdad Esfahbod2006-05-221-3/+25
| | | | | | | | | | | | | | | | | | | | | | | 2006-05-22 Behdad Esfahbod <behdad@gnome.org> Bug 342525 – With PangoFc and PangoWin32, approximate digit width is not what it says * pango/pangocairo-win32font.c (max_glyph_width), (create_metrics_for_context): Use max digit width instead of average. Reverted the following changes: * pango/pangofc-font.c (pango_fc_font_create_metrics_for_context): Likewise for PangoFc. Compute average instead of max. (max_glpyh_with): Now unused, drop. * pango/pangowin32.c (pango_win32_font_get_metrics): Calculate average digit width correctly, not as max of the digit widths. (#342525) Note that this code doesn't really get much used currently (instead the code in pangocairo-win32font.c is used), fixed only for completeness. (max_glpyh_with): Now unused, drop.
* New function pango_font_describe_with_absolute_size().Behdad Esfahbod2006-05-221-1/+1
| | | | | | | | | | | | | | | | | 2006-05-22 Behdad Esfahbod <behdad@gnome.org> * pango/pango-font.h, pango/fonts.c: New function pango_font_describe_with_absolute_size(). * pango/pangocairo-font.c (_pango_cairo_font_get_hex_box_info): * pango/pangocairo-win32font.c (create_metrics_for_context): * pango/pangofc-font.c (pango_fc_font_class_init), (pango_fc_font_describe_absolute), (pango_fc_font_create_metrics_for_context): * pango/pangowin32.c (pango_win32_font_class_init), (pango_win32_font_get_metrics), (pango_win32_font_describe), (pango_win32_font_describe_absolute): Implement and use PangoFontClass->describe_absolute.
* Hook up pango-utils.h into the documentation, as we are installing itBehdad Esfahbod2006-03-311-1/+1
| | | | | | | | 2006-03-30 Behdad Esfahbod <behdad@gnome.org> Hook up pango-utils.h into the documentation, as we are installing it anyway. Move some internal stuff to pango-impl-utils.h and make source files include that instead.
* Fix blurred underlines on Win32 (#332656):Tor Lillqvist2006-03-311-0/+5
| | | | | | | | | | | | | | | | | | | | | 2006-03-30 Tor Lillqvist <tml@novell.com> Fix blurred underlines on Win32 (#332656): * pango/pango-utils.c (pango_quantize_line_geometry): New public function. Used to be the static quantize_position() in pangofc-font.c * pango/pango-utils.h: Declare it. * pango/pango.def: Here, too. * pango/pangofc-font.c (quantize_position): Remove. (get_face_metrics): Use pango_quantize_line_geometry() instead. * pango/pangocairo-win32font.c (create_metrics_for_context): Call pango_quantize_line_geometry() for underline and strikethrough geometries.
* return TRUE to glyphs rendered at all (instead of box). This may beHans Breuer2006-02-251-0/+2
| | | | | | | | | | | 2006-02-25 Hans Breuer <hans@breuer.org> * pango/pangocairo-win32font.c(pango_cairo_win32_font_install) : return TRUE to glyphs rendered at all (instead of box). This may be compiler specific (what to return w/o return) but fixes bug #332538 * pango/makefile.msc : updated * pango/pango.def : just some sorting
* Finish the 'glyph 0' work of this morning: PANGO_GLYPH_NULL that IBehdad Esfahbod2006-02-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2006-02-02 Behdad Esfahbod <behdad@gnome.org> Finish the 'glyph 0' work of this morning: PANGO_GLYPH_NULL that I introduced is renamed to PANGO_GLYPH_EMPTY. It means, no rendering should be performed. The backends however, still return 0 if a glyph is not found. The modules then are free to replace this 0 glyph with an unknown character. * modules/arabic/arabic-fc.c, modules/basic/basic-atsui.c, modules/basic/basic-fc.c, modules/basic/basic-win32.c, modules/basic/basic-x.c, modules/hangul/hangul-fc.c, modules/hebrew/hebrew-fc.c, modules/indic/indic-fc.c, modules/khmer/khmer-fc.c, modules/syriac/syriac-fc.c, modules/thai/thai-fc.c, modules/tibetan/tibetan-fc.c, pango/pangox.c, pango/pangowin32.c: Adapt to above change. Backends return 0 if glyph not found. * pango/fonts.c (pango_font_get_glyph_extents): If font is not usable (!PANGO_IS_FONT (font)), return the generic UNKNOWN_GLYPH metrics. This is used when your backends are misconfigured and you don't find *any* font at all. * pango/pango-engince.c: Add unknown glyphs in fallback shaper, instead of empty glyphs. * pango/shape.c: Call the fall-back shaper if shaper fails, instead of generating a dummy glyph string ourselves. * pango/pango-layout.c (imposed_shape, shape_tab): Use PANGO_GLYPH_EMPTY instead of glyph 0. * pango/pango-renderer.c (pango_renderer_draw_glyph): No-op on PANGO_GLYPH_EMPTY instead of glyph 0. * pango/pangocairo-atsuifont.c, pango/pangocairo-win32font.c, pango/pangocairo-fcfont.c, pango/pangocairo-font.c, pango/pangocairo-private.h: install_font returns a boolean now. * pango/pangocairo-render.c, pango/pangoxft-render.c: Handle font and hex-box failures more gracefully by drawing a generic unknown-box glyph. * pango/pangoft2.c, pango/pangoft2-render.c: Draw the generic unknown-box glyph here too. For unknown glyphs though, if the font is TTF (FT_IS_SFNT), use the zero-indexed glyph, otherwise, draw a box of proper size.
* If locking font face failed, do not assert, just return zero glyphs withBehdad Esfahbod2006-01-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2006-01-29 Behdad Esfahbod <behdad@gnome.org> * modules/arabic/arabic-fc.c, modules/basic/basic-fc.c modules/hebrew/hebrew-fc.c, modules/indic/indic-fc.c modules/khmer/khmer-fc.c, modules/syriac/syriac-fc.c modules/thai/thai-ot.c, modules/thai/thai-shaper.c modules/tibetan/tibetan-fc.c: If locking font face failed, do not assert, just return zero glyphs with an implicit warning. * pango/fonts.c, pango/glyphstring.c pango/modules.c pango/pango-color.c, pango/pango-context.c pango/pango-coverage.c, pango/pango-fontmap.c pango/pango-glyph-item.c, pango/pango-item.c pango/pango-layout.c, pango/pango-markup.c pango/pango-ot-buffer.c, pango/pango-script.c pango/pango-tabs.c, pango/pango-utils.c pango/pangoatsui-fontmap.c, pango/pangocairo-fcfont.c pango/pangocairo-fcfontmap.c, pango/pangocairo-fontmap.c pango/pangocairo-win32font.c, pango/pangofc-font.c pango/pangofc-fontmap.c, pango/pangoft2-fontmap.c pango/pangoft2-render.c, pango/pangoft2.c pango/pangowin32-fontcache.c, pango/pangoxft-font.c pango/pangoxft-render.c, pango/break.c pango/ellipsize.c: Use g_slice for allocating all types. Also, change some g_error's to g_critical's...
* Remove pango.modules on uninstall. (bug #328869)Behdad Esfahbod2006-01-271-2/+2
| | | | | | | | | | 2006-01-27 Behdad Esfahbod <behdad@gnome.org> * modules/Makefile.am: Remove pango.modules on uninstall. (bug * #328869) * pango/pango-fontmap.c, pango/pangocairo-*font.c: Better error messages.
* Draw hexbox for cairo backend. Bug #313551. Based on patch by LingNingBehdad Esfahbod2006-01-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2006-01-14 Behdad Esfahbod <behdad@gnome.org> Draw hexbox for cairo backend. Bug #313551. Based on patch by LingNing Zhang. * pango/pangocairo-private.h (_PangoCairoFontIface): Add new methods: get_font_face and get_scaled_font, and getters: _pango_cairo_font_get_font_face, _pango_cairo_font_get_scaled_font. * pango/pangocairo-private.h: Add _PangoCairoHexBoxInfo, and getter _pango_cairo_get_hex_box_info, and _pango_cairo_get_glyph_extents_missing. * pango/pangocairo-fcfont.c, pango/pangocairo-atsuifont.c, * pango/pangocairo-win32font.c: Export get_font_face and get_scaled_font methods. * pango/pangocairo-fcfont.c: Use * _pango_cairo_get_glyph_extents_missing on missing glyphs. * pango/pangocairo-font.c: Implement _pango_cairo_font_get_font_face, _pango_cairo_font_get_scaled_font, _pango_cairo_get_hex_box_info, and _pango_cairo_get_glyph_extents_missing. * pango/pangocairo-render.c * (_pango_cairo_renderer_draw_unknown_glyph): Added. * pango/pangocairo-render.c (pango_cairo_renderer_draw_glyphs): Cleaned up to use the added function above.
* Make sure #include <config.h> is the first include in the file. (bugBehdad Esfahbod2006-01-141-1/+1
| | | | | | | 2006-01-14 Behdad Esfahbod <behdad@gnome.org> * */*.c, */*/*.c: Make sure #include <config.h> is the first include in the file. (bug #158870, based on patch by Luis Menina)
* Move the calculation of dpi and size earlier. Use the size variable instadTor Lillqvist2005-09-221-20/+16
| | | | | | | | | | | | | | | | | 2005-09-22 Tor Lillqvist <tml@novell.com> * pango/pangocairo-win32font.c (_pango_cairo_win32_font_new): Move the calculation of dpi and size earlier. Use the size variable instad of isize when looking for a matching cached font. Isize was supposed to be the same as size anyway. (Actually it was the same only when LOGPIXELSY equalled 96 (which often is the default value), see below.) * pango/pangocairo-win32fontmap.c (pango_cairo_win32_font_map_init): Set dpi to the LOGPIXELSY value instead of hardcoding 96. * pango/Makefile.am (libpangocairo_1_0_la_LIBADD): Need WIN32_LIBS now.
* Use identical glyph extents cacheing as in pangocairo-fcfont.c. HugeTor Lillqvist2005-09-141-24/+77
| | | | | | | 2005-09-14 Tor Lillqvist <tml@novell.com> * pango/pangocairo-win32font.c: Use identical glyph extents cacheing as in pangocairo-fcfont.c. Huge performance improvement.
* Have a list of metrics by language instead of just one metrics.Tor Lillqvist2005-09-141-34/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2005-09-14 Tor Lillqvist <tml@novell.com> * pango/pangocairo-win32font.c (struct _PangoCairoWin32Font): Have a list of metrics by language instead of just one metrics. (pango_cairo_win32_font_get_scaled_font): Use the name cwfont instead of cffont. (free_metrics_info, pango_cairo_win32_font_finalize): Free the metrics by language list. (create_metrics_for_context): New helper function. Approximate the character and digit widths correctly. (#314114) (pango_cairo_win32_font_get_metrics): Use the list of metrics by language. Call create_metrics_for_context() to measure metrics. (_pango_cairo_win32_font_new): Keep the PangoWin32Font objects in the PangoWin32Face::cached_fonts, like the pangowin32 backend does. PangoWin32Face::cached_fonts isn't really a proper cache. It's a list with unbound length, one PangoWin32Font per size. Once there is cacheing in cairo this can be dropped presumably? What does the pangofc backend do? There are too many levels of cacheing going on: we have the stuff in pangowin32-fontcache.c (unused now with cairo), the PangoWin32FontMap::freed_fonts cache, and the PangoWin32::cached_fonts list. * pango/pangowin32-fontmap.c (pango_win32_fontmap_cache_remove, pango_win32_fontmap_cache_clear): Use GQueue API instead of manipulating pointers manually. * pango/pangowin32-private.h * pango/pangowin32.c: Move PangoWin32MetricsInfo to the private header file, as also pangocairo-win32font.c uses it.
* updatedHans Breuer2005-07-301-1/+1
| | | | | | | | | 2005-07-30 Hans Breuer <hans@breuer.org> * pango/makefile.msc : updated * pango/pangocairo-win32font.c(...get_metrics) : dont use ascent where descent is meant. Fixes size of edit boxes for gtk+-2.7
* Fix mixed code and declarations (#311626, Kazuki IWAMOTO)Owen Taylor2005-07-261-1/+1
| | | | | | | | | | 2005-07-26 Owen Taylor <otaylor@redhat.com> * pango/pangocairo-fontmap.c (pango_cairo_context_get_font_options): Fix mixed code and declarations (#311626, Kazuki IWAMOTO) * pango/pangocairo-win32font.c (pango_cairo_win32_font_install): Fix typo (#311627, Kazuki IWAMOTO)
* Set font options as well.Owen Taylor2005-07-251-2/+3
| | | | | | | | | | | 2005-07-25 Owen Taylor <otaylor@redhat.com> * pango/pangocairo-fcfont.c (pango_cairo_fc_font_install): Set font options as well. * pango/pango-layout.c (line_set_resolved_dir): Always set line->resolved_dir to one of LTR or RTL. (#171439, Reported by Chris Blizzard)
* configure.in Fix a few typos that prevented build on Win32.Tor Lillqvist2005-07-251-2/+2
| | | | | | | | | | 2005-07-25 Tor Lillqvist <tml@novell.com> * configure.in * pango/pangocairo-win32font.c (_pango_cairo_win32_font_new): Fix a few typos that prevented build on Win32. * pango/pango.def: Add pango_is_zero_width.
* Rework handling of context-specific options: drop get_render_key() and addOwen Taylor2005-07-211-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2005-07-19 Owen Taylor <otaylor@redhat.com> * pango/pango-fcfontmap.[ch]: Rework handling of context-specific options: drop get_render_key() and add a opaque "context key" (get_context_key() and friends). Also add a function to get the resolution. * pango/pango-fcfontmap.c pango/pangofc-font.h: - Move the 'lang' into the fontset key lookup and get rid of the funky list-of-hash-tables - Make lookups of fontsets and fonts dependent on the context key for the context. - Simplify the pattern/fontset caching to have one finite-size cache rather than an infinite first-level and a finite-size second level. * pango/pangocairo.h pango/pangocairo-private.h pango/pangocairo-fontmap.c: Add pango_cairo_context_get/set_resolution(), pango_cairo_context_set/get_font_options to allow controlling the resolution and font rendering options for a specific PangoContext. * pango/pangocairo-fcfont.c pango/pangocairo-fcfontmap pango/pangocairo-win32font.c: Implement resolution and font options handling adapt to related Cairo changes. * docs/pango-sections.txt docs/Makefile.am pango/pangowin32.c: Doc updates and build fixes. * pango/pangofc-fontmap.c (pango_fc_make_pattern): Create patterns with FC_SIZE as well as FC_PIXEL_SIZE to work around a libgnomeprint bug. (#309477)
* Update for cairo API change. (pango_cairo_win32_font_get_metrics): Fix x/yOwen Taylor2005-05-121-2/+2
| | | | | | | | 2005-05-11 Owen Taylor <otaylor@redhat.com> * pango/pangocairo-win32font.c (pango_cairo_win32_font_install): Update for cairo API change. (pango_cairo_win32_font_get_metrics): Fix x/y typo.
* Correct parameters passed to MultiByteToWideChar(). Pass -1 as sourceTor Lillqvist2005-04-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2005-04-28 Tor Lillqvist <tml@novell.com> * pango/pangocairo-win32font.c (pango_cairo_win32_font_get_font_face): Correct parameters passed to MultiByteToWideChar(). Pass -1 as source string length so that the target string gets zero-terminated. Size of target array is in number of WCHARs, not number of bytes. Add support to pangowin32 for TrueType fonts with coverage outside the BMP. Fix handling of surrogate pairs in the Uniscribe shaper. (#302238) * pango/pangowin32-private.h (PangoWin32Face): Rename the unicode_table field to cmap. Keep track of its format (4 or 12). (format_12_cmap): Add struct for a format 12 cmap. * pango/pangowin32.c: Corresponding changes. Rename internal functions a bit. (get_format_12_cmap): New function, reads a format 12 cmap. (font_get_cmap): Look for both format 12 (which is preferred) and format 4 cmaps. (pango_win32_font_get_glyph_index, pango_win32_font_calc_coverage): Handle also format 12 cmaps. * modules/basic/basic-win32.c: Handle surrogate pairs in wchar_t strings properly. (unichar_index): New function. Given a wchar_t string and an index into it, calculate the index of the corresponding Unicode character. Each surrogate pair in the wchar_t is just one Unicode character. (set_up_pango_log_clusters, itemize_shape_and_place): Use unichar_index() instead of direct index into wchar_t string.
* Test for renamed cairo_win32_scaled_font_select_font().Owen Taylor2005-04-071-41/+25
| | | | | | | | | | | | 2005-04-07 Owen Taylor <otaylor@redhat.com> * configure.in: Test for renamed cairo_win32_scaled_font_select_font(). * pango/pangocairo-win32font.c: Fix various compilation errors. * pango/pangocairo-fcfont.c pango/pangocairo-win32font.c pango/pangocairo-fontmap.c: Use new matrix API.
* Update to new Cairo font API.Owen Taylor2005-04-071-34/+70
| | | | | | | | | | | 2005-04-07 Owen Taylor <otaylor@redhat.com> * pango/pangocairo-fcfont.c pango/pangocairo-win32font.c pango/pangocairo-render.c: Update to new Cairo font API. * pangpopangowin32.h pango/pangowin32-private.h pango/pangowin32.c pango/pangocairo-win32font.c modules/basic/basic-win32.c: Rename get_scale_factor() to get_metrics_factor() to match Cairo
* variable declaration on the start of the block, not C99 everywhere.Hans Breuer2005-04-031-1/+1
| | | | | | | | | | | 2005-04-04 Hans Breuer <hans@breuer.org> * pango/pangocairo-win32font.c(pango_cairor_win32_font_get_metrics) : variable declaration on the start of the block, not C99 everywhere. * examples/viewer-win32.c : updated to not so recent Pango api changes * pango/makefile.msc : pangocairo build win32 version, not freetype
* Set win32font->logfont. (How was this working at all?)Owen Taylor2005-03-181-0/+5
| | | | | | | 2005-03-17 Owen Taylor <otaylor@redhat.com> * pango/pangocairo-win32font.c (_pango_cairo_win32_font_new): Set win32font->logfont. (How was this working at all?)
* PangoCairoFontMap for win32 fonts.Owen Taylor2005-02-241-0/+313
2005-02-24 Owen Taylor <otaylor@redhat.com> * pango/pangocairo-win32.h pango/pangocairo-win32font.c pango/pangocairo-win32fontmap.c pango/Makefile.am: PangoCairoFontMap for win32 fonts. * pango/pangocairo-fontmap.c: Use PangoCairoWin32FontMap when available. * pango/pangowin32.h pango/pangowin32-fontmap.h pango/pangowin32.c: Add virtual pango_win32_font_select_font() to prepare a DC for use with a PangoWin32Font, and to release, pango_win32_font_scale_font() to get logical unit => Pango units scale, pango_win32_font_done_font() to release resources. * pango/pangowin32-fontmap.[ch]: Add a find_font() virtual method to allow subclasses that change how PangoFont lookup and creation happens. * pango/pangowin32-fontmap.c: Move initialization into pango_win32_font_map_init() to facilitate derivation. * pango/pangowin2.c pango/pangowin32-fontmap.c pango/pangowin32-private.h: Move PangoWin32Font/PangoWin32FontMap definitions into pangowin32-private.h to allow derivation for PangoCairoWin32Font. * modules/basic/basic-win32.c: Use pango_win32_font_select_font() and friends. * modules/basic/basic-win32.c: Use g_utf8_to_utf16 instead of g_convert for simplicity and speed. * pango/fonts.c (pango_font_get_font_map) pango/pango-font.h pango/pangofc-font.c pango/pangowin32.c pango/pango.c pango/pango.def docs/pango-sections.txt: Add a virtual function to get the fontmap for a font. * pango/pangocairo-render.c: Use pango_font_get_font_map() rather than PangoFcFontMap hack. * pango/pango-types.h: Move the declaration of PangoFontMap here to avoid interactions between pango-font.h and pango-fontmap.h. * pango/pangocairo.h: Remove accidental include of pangofc-fontmap.h.