summaryrefslogtreecommitdiff
path: root/pango/pangowin32-private.h
Commit message (Collapse)AuthorAgeFilesLines
* Revert "PangoWin32: Use HarfBuzz platform APIs if available"Chun-wei Fan2022-10-171-2/+0
| | | | | | | | | | | It turned out that there were issues in regards to building HarfBuzz as a fallback dependency, so we retain using only the former method to create the hb_face_t using only raw data, which does not depend on platform API usage in HarfBuzz. Hence, reduce the clutter in the build files a bit, which was a necessary evil back in time. This reverts commit 6b0aa77d23ac969c12eab00b178957a63befe5bd.
* PangoWin32: Use HarfBuzz platform APIs if availableChun-wei Fan2022-09-261-0/+2
| | | | | | | Use the DirectWrite and/or GDI APIs in HarfBuzz to create the hb_font_t's that we need, if they are available in HarfBuzz. Use the former raw-data method if neither are available, or if using DirectWrite failed and GDI support is not available.
* PangoWin32: Add private API to clean up IDWriteFontFaceChun-wei Fan2022-09-261-0/+3
| | | | | | ...which is needed for PangoCairo for Windows, when DirectWrite is used to create the cairo_font_face_t, so that that object does get cleaned up when the cairo_font_face_t is destroyed.
* PangoWin32: Add private API for getting IDWriteFontFace from fontChun-wei Fan2022-09-261-0/+3
| | | | | | | This moves some items under PangoWin32 in the DirectWrite support to simplify acquiring the DirectWrite font face that is needed for various operations, as we will need to do this in PangoCairo in the Windows support.
* PangoWin32: Implement is_hinted on Windows using DirectWriteChun-wei Fan2022-09-261-0/+6
| | | | | | | | ... by querying the font table 'gasp' and see whether the bits needed for hinting are there. Codewise, it is simpler with GDI+, but it would then require more overhead since GDI(+) operations are needed (this means "slower") and we need to put boilerplates for using GDI+ from our plain-C code.
* PangoWin32: Query font descriptions using DirectWrite on LOGFONTW'sChun-wei Fan2022-09-261-4/+4
| | | | | | | | | | | | | We now use DirectWrite to query the font weight, stretch, description and so on by using first DirectWrite's GdiInterop to convert the logfontw into an IDirectWriteFont, since the support in there for querying font attributes are more complete in there. Take out the warned fonts items, as DirectWrite would support the font attributes that we need much better (i.e. stretch and so on), and the warned fonts items will get into the way. Portions based on Luca Bacci's work for querying the font description for Windows using DirectWrite for the upcoming Pango2.
* pangowin32: Check for MonoSpace fonts using DirectWriteChun-wei Fan2022-09-261-0/+3
| | | | | | | ...if we have Windows 7 with the platform update (which is normally the case), otherwise we fallback to former GDI approach, since we need to use the IDWriteFont1 interface that is only available with updated Windows 7.
* pangowin32: Use DirectWrite to enumerate system fontsChun-wei Fan2022-09-261-0/+16
| | | | | | | | | | | | ...instead of using EnumFontFamiliesEx(), and retrieve the LOGFONTW's that we need via DirectWrite's GDI interop. Also cache up our IDWriteFont's that we obtained, so that we can use DirectWrite to query font properties better than what GDI/Uniscribe can do for us, such as obtaining stretch info from the font. Also update synthesize_foreach() accordingly, since we should also record the IDWriteFonts as well for synthesized LOGFONTWs. Portions based on Luca Bacci's implementation of the DirectWrite fontmap support in the upcoming Pango2.
* pangowin32: Initialize DirectWriteChun-wei Fan2022-09-261-0/+11
| | | | | We set up the boilerplate that is necessary for using DirectWrite in our code. Also add code to tear it down after we are done with it.
* Drop pango-fontset-private.hMatthias Clasen2021-12-241-1/+1
| | | | This was just an empty header.
* pangowin32: Clear cmap on finalizeSeungha Yang2021-04-071-0/+4
| | | | | Implement copy method for format_4_cmap and format_12_cmap, and free don't leak the struct.
* pangowin32-fontmap: load windows fallbacks and aliases in class initAaron Boxer2020-06-081-1/+1
| | | | | | | Currently, because of the g_once_init*, only the very first font map that is created will get the correct list of aliases. With these changes the fontmap class loads the aliases once, and this hash table is used by all fontmap objects.
* win32: Use GPrivate-managed display device contextYongsu Park2020-06-081-1/+3
| | | | | | | | | | | | | | | | | | | | | The document of [CreateDCA][1] says: > If lpszDriver or lpszDevice is DISPLAY, the thread that calls > CreateDC owns the HDC that is created. When this thread is > destroyed, the HDC is no longer valid. Thus, if you create the HDC > and pass it to another thread, then exit the first thread, > the second thread will not be able to use the HDC. So this change introduces GPrivate to fix potential problem. This also fixes the problem caused by accessing the global variable DC directly, which makes some early call to Pango functions fail. (e.g., failure of calling pango_win32_font_description_from_logfontw from _get_system_font_name in GTK.) [1]: https://docs.microsoft.com/windows/win32/api/wingdi/nf-wingdi-createdca
* Add pango_font_face_get_familyMatthias Clasen2019-10-311-0/+1
|
* PangoWin32: Use hb_font_get_nominal_glyphKhaled Hosny2019-07-271-20/+1
| | | | | Use hb_font_get_nominal_glyph in pango_win32_font_get_glyph_index (deprecated), to better match what Pango is actually using internally.
* PangoWin32: Make font discovery thread-safeChun-wei Fan2019-07-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | Make font discovery using GDI/Unicscribe on Windows thread-safe, by: -Making the alias HashTable a part of the _PangoWin32FontMap struct, so that we only need to initialize this once when we initialize the PangoFontMap on Win32. Make sure that we fill in that hash table with the fonts items we ask from the system once and only once as we initialize the PangoWin32FontMap. -Make the warned_fonts HashTable a part of the _PangoWin32FontMap struct as well, and create the HashTable when we init the PangoWin32FontMap. -Make the access to the common HDC in pangowin32.c where Alex mentioned that could be thread-unsafe done through pango_win32_get_dc(). At this point the test-pangocairo-threads will pass in Meson, tested for 20 successive rounds using 'meson test test-pangocairo-threads'. Note that we still get the "Pango-WARNING **:hh:mm:ss.sss: All font fallbacks failed!!!", but at least we are doing much better on PangoWin32 in terms of thread-safety.
* PangoWin32: Drop _pango_win32_os_version_infoChun-wei Fan2019-07-251-1/+0
| | | | We don't need this anymore since we need Vista or later to run.
* Remove now unused platform shaping codeKhaled Hosny2019-07-191-10/+0
|
* Header cleanupMatthias Clasen2019-07-041-0/+3
| | | | | | | Abolish the PANGO_ENABLE_BACKEND and PANGO_ENABLE_ENGINE defines. All backend-only apis are moved into private headers, all apis that were engine-only are marked as deprecated, since engines are.
* Decorate the symbols in the headers with version macrosChun-wei Fan2016-06-291-0/+8
| | | | | | | From the last commit, decorate all the symbols with the version macros. Also add the version macros in the docs. https://bugzilla.gnome.org/show_bug.cgi?id=767587
* Deprecate module system, skip it for shaper modulesBehdad Esfahbod2015-04-041-2/+10
| | | | | | | | | | | | | | Now shaper is discovered via (previously unused!) font->find_shaper(). I'm keeping that just to allow clients override shaping. Though, even that I'm not sure we want to keep. Wraps shaper in PangoEngineShape structs to keep PangoAnalysis API intact. Deprecated pango-modules.h and some pango-engine.h. Language modules are not moved yet. Wired up PangoFc, PangoWin32, and PangoCoretext shapers.
* Bug 682846 - Use G_DEFINE_TYPE in pangowin32-fontmapBehdad Esfahbod2013-03-151-0/+1
| | | | Based on patch from Chun-wei Fan.
* Improve performance on Windows especially for non-Latin scriptsTor Lillqvist2010-06-261-4/+3
| | | | | | | The use of Uniscribe script caches was decidedly suboptimal. Use one persistent SCRIPT_CACHE per Win32 font and script. Patch by by David E. Hollingsworth and Fredrik Corneliusson, from bug
* pango/pangowin32-private.h Drop the PangoWin32FontMap::n_fonts field whichTor Lillqvist2008-05-261-2/+0
| | | | | | | | | | | | | 2008-05-26 Tor Lillqvist <tml@novell.com> * pango/pangowin32-private.h * pango/pangowin32-fontmap.c: Drop the PangoWin32FontMap::n_fonts field which wasn't really used for anything. Rename the field PangoWin32Family::font_entries to faces. Rename some local variables to be more consistently named. svn path=/trunk/; revision=2637
* pango/pangowin32-private.h Drop the PangoWin32SizeInfo struct and the hashTor Lillqvist2008-05-261-2/+3
| | | | | | | | | | | | | | | | 2008-05-26 Tor Lillqvist <tml@novell.com> * pango/pangowin32-private.h * pango/pangowin32-fontmap.c: Drop the PangoWin32SizeInfo struct and the hash table mapping from the relevant part of a LOGFONTW struct to a list of PangoWin32SizeInfos in PangoWin32FontMap. It seems that each list was always of length one anyway, so instead just map directly to each such single list member, also a LOGFONTW struct. Actually I wonder whether this map is needed at all, will have to experiment. svn path=/trunk/; revision=2635
* Bug 515484: Pango on Windows is missing Type 1 font support Patch fromTor Lillqvist2008-02-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-02-24 Tor Lillqvist <tml@novell.com> Bug 515484: Pango on Windows is missing Type 1 font support Patch from Adrian Johnson. * pango/pangowin32-private.h (PangoWin32Face): Add has_cmap field that tells whether the font has a cmap or not. A Type 1 font doesn't. * pango/pangowin32.c (pango_win32_font_get_type1_glyph_index): New static function. Uses GetGlyphIndicesW() to get the glyph indices for Type 1 fonts. Possibly also TrueType fonts that for some reason lack the cmap formats we understand. (pango_win32_font_calc_type1_coverage): New static function. Uses GetFontUnicodeRanges() to get the coverage for Type 1 fonts, and possibly TrueType fonts that lack the cmap formats we understand. (pango_win32_font_get_glyph_index): Set has_cmap to false if the font doesn't have a cmap. Call pango_win32_font_get_type1_glyph_index() in that case. (pango_win32_font_calc_coverage): Set has_cmap to false if the font doesn't have a cmap. Call pango_win32_font_calc_type1_coverage() in that case. * pango/pangowin32-fontmap.c (pango_win32_enum_proc): Accept also Type 1 fonts. (pango_win32_insert_font): Initialise has_cmap tentativaly to True. svn path=/trunk/; revision=2573
* Add is_synthetic field.Tor Lillqvist2007-06-121-0/+1
| | | | | | | | | | | | | | | | 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
* Add G_GNUC_CONST and G_GNUC_PURE annotations.Behdad Esfahbod2007-06-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2007-06-11 Behdad Esfahbod <behdad@gnome.org> * pango/pango-attributes.h: * pango/pango-font.h: * pango/pango-glyph.h: * pango/pango-gravity.h: * pango/pango-language.h: * pango/pango-layout.h: * pango/pango-matrix.h: * pango/pango-ot-private.h: * pango/pango-ot.h: * pango/pango-renderer.h: * pango/pango-script.h: * pango/pango-tabs.h: * pango/pango-utils.h: * pango/pangoatsui-private.h: * pango/pangocairo-atsui.h: * pango/pangocairo-atsuifont.h: * pango/pangocairo-fc.h: * pango/pangocairo-private.h: * pango/pangocairo-win32.h: * pango/pangocairo.h: * pango/pangofc-decoder.h: * pango/pangofc-font.h: * pango/pangofc-fontmap.h: * pango/pangoft2-private.h: * pango/pangoft2.h: * pango/pangowin32-private.h: * pango/pangox-private.h: * pango/pangoxft-render.h: * pango/pangoxft.h: Add G_GNUC_CONST and G_GNUC_PURE annotations. svn path=/trunk/; revision=2345
* pango/pangowin32-private.h pango/pangowin32.c pango/pangowin32-fontcache.cTor Lillqvist2007-03-101-28/+13
| | | | | | | | | | | | | | | | | | 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-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: Drop trailing whitespace.Behdad Esfahbod2007-01-161-4/+4
| | | | | | | | | 2007-01-16 Behdad Esfahbod <behdad@gnome.org> *.c, *.h: Drop trailing whitespace. svn path=/trunk/; revision=2163
* Make #include syntax in sources and headers more consistent. We are usingBehdad Esfahbod2006-03-311-2/+2
| | | | | | | | | 2006-03-30 Behdad Esfahbod <behdad@gnome.org> * pango/*.[ch]: Make #include syntax in sources and headers more consistent. We are using the "..." syntax for all Pango headers in source files, and <...> syntax in all header files, except for including private headers, that we use "...".
* Fix compilation error with MSVC. (#333115)Tor Lillqvist2006-03-021-2/+4
| | | | | | | 2006-03-03 Tor Lillqvist <tml@novell.com> * pango/pangowin32-private.h (PING): Fix compilation error with MSVC. (#333115)
* pango/pangowin32-private.h (PING) pango/pangowin32.c Use g_print() insteadTor Lillqvist2006-02-281-6/+6
| | | | | | | | | | 2006-02-28 Tor Lillqvist <tml@novell.com> * pango/pangowin32-private.h (PING) * pango/pangowin32.c * modules/basic/basic-win32.c: Use g_print() instead of printf() for debugging output, to enable easy redirection using GLib facilities. (#332855)
* Have a list of metrics by language instead of just one metrics.Tor Lillqvist2005-09-141-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Correct parameters passed to MultiByteToWideChar(). Pass -1 as sourceTor Lillqvist2005-04-281-4/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Update to new Cairo font API.Owen Taylor2005-04-071-4/+4
| | | | | | | | | | | 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
* PangoCairoFontMap for win32 fonts.Owen Taylor2005-02-241-4/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* pango/pangowin32-private.h Cache metrics by language, like the otherTor Lillqvist2004-12-181-0/+2
| | | | | | | | | 2004-12-18 Tor Lillqvist <tml@iki.fi> * pango/pangowin32-private.h * pango/pangowin32.c (pango_win32_font_get_metrics): Cache metrics by language, like the other backends do. Don't try to get the width of the 0..9 digit string if the font doesn't cover digits.
* Add --with-usp10 flag to indicate where to find the usp10.h header, forTor Lillqvist2002-10-211-11/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-10-22 Tor Lillqvist <tml@iki.fi> * configure.in: Add --with-usp10 flag to indicate where to find the usp10.h header, for using Uniscribe on Win32. Set USP10_H autoconf variable, HAVE_USP10_H config.h macro and HAVE_USP10_H automake conditional. * acconfig.h: Add HAVE_USP10_H. * pango/pangowin32-private.h (PANGO_WIN32_DEBUGGING): Change semantics of this flag. If defined, also need to set env var PANGO_WIN32_DEBUG to get the copious debugging output. Change PING() macro accordingly. Add variable pango_win32_debug. * pango/pangowin32.c (pango_win32_get_dc): New function. Code factored out from pango_win32_font_class_init() and pango_win32_font_map_class_init(). (pango_win32_get_debug_flag): New function. (pango_win32_render): Handle y offsets, too. Potentially need to call ExtTextOutW several times, one for each run of sequential glyphs with the same y offset. * pango/pangowin32.h: Declare above new functions, in the part only for shaper engine use. * pango/pangowin32.def: Export above new functions. * pango/pangowin32-fontmap.c (pango_win32_font_map_class_init): Call pango_win32_get_dc() as mentioned above. * modules/basic/Makefile.am: If HAVE_USP10_H, let basic-win32.lo depend on usp10.h. * modules/basic/basic-win32.c: If HAVE_USP10_H, and the Uniscribe DLL usp10.dll is present, use Uniscribe. (uniscribe_shape, itemize_shape_and_place, set_up_pango_log_clusters, convert_log_clusters_to_byte_offsets, make_langid, init_uniscribe): New functions. (dump_glyphs_and_log_clusters, lang_name, charset_name): Debugging functions.
* Distribute specifically pango.aliases and pango.modules, not the wholeTor Lillqvist2002-09-211-31/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-09-21 Tor Lillqvist <tml@iki.fi> * pango-zip.sh.in: Distribute specifically pango.aliases and pango.modules, not the whole etc/pango which might contain editor backup files. * pango/pangowin32-private.h * pango/pangowin32*.c: Rename DEBUGGING to PANGO_WIN32_DEBUGGING. Use plain printf instrad of g_print in the PING macro for debugging output (to avoid UTF-8 requirement). * pango/pangowin32.h: Guard against redefinition of _WIN32_WINNT. * pango/pangowin32-private.h: Remove the FS_VIETNAMESE define, not needed. Rename PangoWin32Font::face to win32face. Add enum PangoWin32CoverageLanguageClass, used to classify PangoLanguages that might have locale-specific coverage of fonts (i.e. CJKV). Change PangoWin32Face::coverage into an array, coverages. Move some TrueType macro and struct defines from pangowin32.c here. Rename them a bit to match the names used in the specs better. Add declarations for new functions (see below). * pango/pangowin32.c (pango_win32_get_hfont): Convert LOGFONT::lfFaceName to UTF-8 before printing. (pango_win32_render): Revert the change from 2002-09-05. Characters not in a font are supposed to show up at this stage as invalid glyphs (usually a box). It's up to the higher layers to filter out TABs and other characters that shouldn't be visible. (pango_win32_get_name_header, pango_win32_get_name_record): New functions, to read the name table header and records from a TrueType font. (font_name_in): New function, checks if a font has a name in one of the spoecial-case languages, or actually locales (zh_TW, zh_CN, ja, ko, vi). Checks the TrueType name table. (pango_win32_font_calc_coverage): Take a PangoLanguage parameter, too. Use it to decide whether to hide the Unified CJKV Ideographs block in case the font is not for the specified locale. If so, the coverage for these characters is set to PANGO_COVERAGE_APPROXIMATE. * pango/pangowin32-fontmap.c: Remove PangoWin32FontMap::faces, unused. Remove dead _WE_WANT_GLOBAL_ALIASES_ code. Rename parent_class to font_map_parent_class to match pangox-fontmap.c. (get_family_name, get_family_name_lowercase): New functions. Search for an English name for a TrueType font, in case the font name in LOGFONT::lfFaceName is non-ASCII. (Can one assume that if it is ASCII, it is the English name? Do some TrueType fonts have different names in French, German, etc, and does the system return these if the locale is set to use French, German, etc?) (pango_win32_insert_font): Don't store LOGFONTs that differ only in charset. What charset we specify when calling CreateFontIndirect() is irrelevant, as we are going to use ExtTextOutW() anyway, i.e. Unicode. Use the English family name from get_family_name_lowercase(), not the one returned in the LOGFONT from font enumeration. Bypass the code that sets up the mapping for monospace, serif and sans, and the recignition of plain "courier" for "courier new". We need a pango.aliases anyhow, so let it handle that. (pango_win32_coverage_language_classify): New function. (pango_win32_font_entry_set_coverage, pango_win32_font_entry_get_coverage): Take also a PangoLanguage parameter, use the corresponding entry in the PangoWin32Face::coverages array. * pango/pango-utils.c (pango_get_lib_subdirectory, pango_get_sysconf_subdirectory): Fix doc comment on Win32 behaviour.
* Add pango_win32_os_version_info variable, an OSVERSIONINFO struct.Tor Lillqvist2002-03-171-0/+1
| | | | | | | | | | | | | | | | | 2002-03-17 Tor Lillqvist <tml@iki.fi> * pango/pangowin32-private.h: Add pango_win32_os_version_info variable, an OSVERSIONINFO struct. * pango/pangowin32.c: Initialise it. * pango/pangowin32.h: Set _WIN32_WINNT to 0x0501 before including <windows.h> to get the ClearType-related macros defined (if recent enough headers are used). * pango/pangowin32-fontcache.c (pango_win32_font_cache_load): Set desired font quality to CLEARTYPE_QUALITY if on XP (or later), and the system settings ask for ClearType.
* updated externalsHans Breuer2001-09-211-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-21 Hans Breuer <hans@breuer.org> * pango/pango.def : updated externals * pango/makefile.msc : build ft2 backend too. * pango/pangowin32-fontmap.c - Convert PangoWin32FamilyEntry into PangoWin32Family deriving from PangoFontFamily. - Convert PangoWin32FontEntry into PangoWin32Face deriving from PangoFontFace. - Change the list_families() method of the PangoWin32FontMap to list PangoFontFamily * rather than names. * pango/pangowin32.c : reflect PangoFontDescription api change * pango/pangowin32.h : don't include pango.h but only the required headers * modules/basic/basic-win32.c : #include "pango-engine.h" * pango/testfonts.c : reflect recent pango api changes
* Large rewrite of the win32 backend to use real glyph indexes instead ofAlexander Larsson2001-08-091-27/+28
| | | | | | | | | | | | | | | | | | | 2001-08-09 Alexander Larsson <alexl@redhat.com> * pango/pangowin32.h: * pango/pangowin32-private.h: * pango/pangowin32.c: * pango/pangowin32-fontmap.c: * modules/basic/basic-win32.c: * pango/pangowin32.def: Large rewrite of the win32 backend to use real glyph indexes instead of unicode codes. Also drops the subfont thing, thereby simplifying the code immensely. This looses some functionality, but i will add that back soon using global (non backend-specific) aliases. This is the first cut, and is not perfect. It still has some issues and imperfections, but it so clearly better than the current imlementation that I'm checking it in anyway.
* changed version to 0.17Hans Breuer2001-06-221-2/+2
| | | | | | | | | | | | 2001-06-22 Hans Breuer <hans@breuer.org> * pango/makefile.msc : changed version to 0.17 * pango/pango.def : updated externals * pango/pangowin32-fontmap.c : * pango/pangowin32-private.h : * pango/pangowin32.c : adapted to PangoLanguage usage
* Define PANGO_VERSION.Tor Lillqvist2000-11-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-30 Tor Lillqvist <tml@iki.fi> * pango/makefile.mingw.in (DEFINES): Define PANGO_VERSION. Changes by Hans Breuer: * pango/pango-layout.c (shape_tab): Add a FIXME comment. * pango/pango-markup.c (compare_xcolor_entries): Use g_strcasecmp. * pango/pango-utils.c (pango_get_sysconf_subdirectory): Use second fallback location if there is no pango subdir in the Windows directory. * pango/pangowin32-fontmap.c (pango_win32_font_entry_get_coverage): Check if fopen succeeded. * pango/pangowin32-private.h (DEBUGGING): Turn off. * pango/pangowin32.c (pango_win32_unicode_classify): We can in fact get out of the loop. Return invalid value in that case. (subfont_has_glyph): Improve performance a bit. * pango/querymodules.c: Small change for MSVC build. * modules/basic/basic-win32.c (basic_engine_get_coverage): Performance improvement. * examples/viewer-win32.c (main): Disable double buffering on the layout widget.
* New file.Tor Lillqvist2000-11-191-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-19 Tor Lillqvist <tml@iki.fi> * README.win32: New file. * pango/fonts.c (pango_font_description_to_filename): New function. As pango_font_description_to_string, but with result that is better suitable as a filename: No spaces or other strange characters, all in lowercase. (pango_font_describe): Implement this function, call the corresponding method. * pango/pango-font.h: Declare pango_font_description_to_filename. * pango/pangowin32.c (pango_win32_font_describe) * pango/pangoft2.c (pango_ft2_font_describe): Implement these. * pango/pangoft2-fontmap.c (pango_ft2_font_entry_get_coverage) * pango/pangowin32-fontmap.c (pango_win32_font_entry_get_coverage): Implement file-based persistent caching of coverages. * pango/pangoft2-private.h (struct _PangoFT2FontEntry) * pango/pangowin32-private.h (struct _PangoWin32FontEntry): Move struct definition here from the -fontmap files. * pango/pango.def: Updates.
* Define HAVE_FRIBIDI.Tor Lillqvist2000-11-141-0/+1
| | | | | | | | | | 2000-11-15 Tor Lillqvist <tml@iki.fi> * config.h.win32: Define HAVE_FRIBIDI. * pango/pango.def: Add new functions. * pango/pango{win32*,ft2*}.[ch]: Add my name to copyright notice.
* Add code to call SetTextAlign, but commented out.Tor Lillqvist2000-11-111-1/+6
| | | | | | | | | | | 2000-11-11 Tor Lillqvist <tml@iki.fi> * pango/pangowin32.c (pango_win32_render): Add code to call SetTextAlign, but commented out. * pango/makefile.mingw.in (PANGO_OBJS): Add new objects. * pango/pango.def: Add new functions.
* Handle also ft_pixel_mode_mono glyphs.Tor Lillqvist2000-08-201-0/+7
| | | | | | | | | | | | | | | 2000-08-21 Tor Lillqvist <tml@iki.fi> * pango/pangoft2.c (pango_ft2_render): Handle also ft_pixel_mode_mono glyphs. * pango/pangoft2*: Portability enhancements (non-gcc). * examples/viewer-{ft2,win32}.c: One more 1000 vs. PANGO_SCALE fix. * pango/module-defs.c.win32: New file. * pango/Makefile.am: Distribute it.