summaryrefslogtreecommitdiff
path: root/pango/shape.c
Commit message (Collapse)AuthorAgeFilesLines
* Finish the 'glyph 0' work of this morning: PANGO_GLYPH_NULL that IBehdad Esfahbod2006-02-031-26/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Oops!Behdad Esfahbod2006-02-021-1/+0
|
* Use PANGO_GLYPH_NULL for when no glyph should be drawn. UseBehdad Esfahbod2006-02-021-3/+12
| | | | | | | | | | | | | | | | | | | | | | | 2006-02-02 Behdad Esfahbod <behdad@gnome.org> * 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/fonts.c, pango/pango-engine-private.h pango/pango-types.h, pango/pangocairo-fcfont.c, pango/pangocairo-font.c, pango/pangocairo-private.h, pango/pangocairo-render.c, pango/pangofc-decoder.c, pango/pangofc-font.c, pango/pangoft2-render.c, pango/pangoft2.c pango/pangowin32.c, pango/pangox.c, pango/pangoxft-font.c pango/pangoxft-private.h, pango/pangoxft-render.c, pango/shape.c: Use PANGO_GLYPH_NULL for when no glyph should be drawn. Use PANGO_GLYPH_UNKNOWN_FLAG for all backends to mark unknown flags. There's no need for pango_font_get_unknown_glyph() anymore, since all backends know how to handle PANGO_GLYPH_UNKNOWN_FLAG gracefully. We may add that in the future however. (fixes bug #73147, closes bug #329524)
* Improve error handling in high-frequency functions: Only warn once.Behdad Esfahbod2006-01-311-13/+10
| | | | | | | | | | | | | | | 2006-01-30 Behdad Esfahbod <behdad@gnome.org> * pango/shape.c (pango_shape): * pango/fonts.c (pango_font_get_glyph_extents): * pango/pangocairo-font.c (_pango_cairo_font_install): Improve error handling in high-frequency functions: Only warn once. * pango-impl-utils.h, pangoutils.h: * pangocairo-private.h, pangocairo-font.c: Add machinery for above: _pango_warning_history and _pango_cairo_warning_history.
* Oops, removed all my changes the other time :(Behdad Esfahbod2006-01-301-3/+21
| | | | | | | | | | | | 2006-01-30 Behdad Esfahbod <behdad@gnome.org> Bug 328314 – Examples should use GOption instead of argcontext.c Patch from Antoine Dopffer. * examples/renderdemo.c: Use GOption for parsing cmd-line options. * examples/argcontext.c, examples/argcontext.h: Removed.
* Do not crash if the (win32 typically) shaper fails. Bug #304702:Behdad Esfahbod2006-01-291-8/+13
| | | | | | | | | | | | | | | | 2006-01-29 Behdad Esfahbod <behdad@gnome.org> Do not crash if the (win32 typically) shaper fails. Bug #304702: * pango/pango-engine.c (_pango_engine_shape_shape): Set num_glyphs to zero if failing. * pango/pango-shape.c (pango_shape): Instead of crashing if the shaper failed to produce any glyphs, print out a warning message containing the name of the font, and mark the font such that we don't keep printing warning for the same font. Moreover, inject one whitespace glyph per character, so you just see nothing, but everything works otherwise.
* Do not crash if the (win32 typically) shaper fails. Bug #304702:Behdad Esfahbod2006-01-291-5/+39
| | | | | | | | | | | | | | 2006-01-29 Behdad Esfahbod <behdad@gnome.org> Do not crash if the (win32 typically) shaper fails. Bug #304702: * pango/pango-engine.c (_pango_engine_shape_shape): Set num_glyphs to zero if failing. * pango/pango-shape.c (pango_shape): Instead of crashing if the shaper failed to produce any glyphs, print out a warning message containing the name of the font, and mark the font such that we don't keep printing warning for the same font.
* Make sure #include <config.h> is the first include in the file. (bugBehdad Esfahbod2006-01-141-0/+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)
* Minor doc fixes. (#167922, #167924, Billy Biggs)Owen Taylor2005-02-211-1/+1
| | | | | | | | 005-02-21 Owen Taylor <otaylor@redhat.com> * pango/fonts.c (pango_font_get_glyph_extents): * pango/shape.c (pango_shape): Minor doc fixes. (#167922, #167924, Billy Biggs)
* Make PangoEngine{,Lang,Shape} GObjects, and use a GTypeModule-basedOwen Taylor2003-08-031-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sat Aug 2 23:19:16 2003 Owen Taylor <otaylor@redhat.com> * pango/pango-engine.[ch] modules/*/*-{fc,win32,x}.c pango/modules.c pango/break.c pango/pango-context.c pango/pango-layout.c pango/pango-modules.h pango/querymodules.c pango/shape.c: Make PangoEngine{,Lang,Shape} GObjects, and use a GTypeModule-based module-loading system closely based on the one used for GtkIMContext and GtkThemeEngine. * pango/pango-impl-utils.h: OK, I'm tired of typing in get_type() functions. * pango/pango-script.[ch] pango/pango-script-table.h tests/testscript.c tools/gen-script-table.pl: Add port of script-range code from ICU in preparation for future use. (#91542) * tools/gen-script-for-lang.c: Utility program to determine the script for each fontconfig .orth file. * docs/tmpl/{scripts.sgml,pango-engine-lang.sgml, pango-engine-shape.sgml} docs/pango-sections.txt docs/pango-docs.sgml: Redo to go along with the above changes. * configure.in: chmod +x tests/runtests.sh
* Set is_cluster_start attributes based on the log_clusters[] set by theOwen Taylor2002-07-311-0/+16
| | | | | | | | Tue Jul 30 23:10:14 2002 Owen Taylor <otaylor@redhat.com> * pango/shape.c (pango_shape): Set is_cluster_start attributes based on the log_clusters[] set by the shape engine. (Fix for #84307, Reported by Alex Larsson, others.)
* removed the arbitrary limit to 10 fonts. Instead make the command lineHans Breuer2001-11-231-4/+5
| | | | | | | | | | | | | | | | | | | | 2001-11-23 Hans Breuer <hans@breuer.org> * testfonts.c : removed the arbitrary limit to 10 fonts. Instead make the command line params useful again and reduce the default result bitmap size by decreasing the default font size. * pango/pangowin32-fontcache.c (pango_win32_font_cache_load): Don't always turn on anti-aliasing. Respect the users settings from 'Properties of Display/Effects'. * pango/makefile.msc : updated, version 0.22 * pango/pango.def : updated externals * pango/font.c pango/pango-coverage.c pango-utils.c pango/pangowin32.c pango/shape.c : coding style and static correctness
* move pango_shape and pango_reorder_items in here.Havoc Pennington2000-12-161-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-15 Havoc Pennington <hp@pobox.com> * pango/pango-glyph.h: move pango_shape and pango_reorder_items in here. * pango/pango-break.h: move most of pango.h in here, so that pango.h can be the only file that includes pango-enum-types.h, so that changing any header doesn't end up rebuilding all of pango due to a rebuild of pango-enum-types.h. * pango/makeenums.pl: script to generate pango-enum-types.[hc] * pango/Makefile.am (pango_headers): built pango-enum-types.h, pango-enum-types.c that do enum type registration; add pango-break.h; do some assorted rearranging to handle the built headers * pango/pango.h: moved most of it to pango-break.h * pango/break.c: include individual headers, not pango.h * pango/shape.c: ditto * pango/reorder-items.c: ditto * pango/querymodules.c: ditto * pango/pango-layout.c: ditto * pango/pango-indic.c: ditto * pango/mapping.c: ditto * pango/itemize.c: ditto * pango/fonts.c: ditto
* add assertion that shaper != NULL to catch engine problems fasterHavoc Pennington2000-12-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-14 Havoc Pennington <hp@redhat.com> * pango/fonts.c (pango_font_find_shaper): add assertion that shaper != NULL to catch engine problems faster * pango/Makefile.am (libpangox_la_SOURCES): modules.[hc] and module-defs.c have to go in libpangox for now since the modules use the X stuff, and static linkage won't let you play games here * examples/Makefile.am (pango_viewer_LDADD): fix order of link * modules/indic/pango-indic-script.h (pango_indic_get_char): make this a macro, so it doesn't collide between modules * modules/*/Makefile.am: Fix to work if the module isn't included * examples/Makefile.am: don't query modules if we didn't build any * modules/indic/gurmukhi.c (MODULE_ENTRY): fix prefix * modules/indic/bengali.c (MODULE_ENTRY): fix prefix * modules/indic/gujarati.c (MODULE_ENTRY): fix prefix * modules/indic/devanagari.c (MODULE_ENTRY): fix prefix * modules/indic/myanmar.c (MODULE_ENTRY): uniquely prefix the functions * modules/Makefile.am (MODULES): handle case where there are no modules to query * configure.in: Fix up include_modules stuff to work with Indic * pango/glyphstring.c (pango_glyph_string_set_size): Just g_error() if the glyph string exceeds maximum integer size, instead of mysteriously crashing later.
* Every character must be part of some cluster, so when we dont' have anOwen Taylor2000-11-141-1/+11
| | | | | | | | | Tue Nov 14 18:45:24 2000 Owen Taylor <otaylor@redhat.com> * pango/shape.c (pango_shape): Every character must be part of some cluster, so when we dont' have an engine at all (pathalogical, happens now for formatting characters), create a cluster with one glyph=0 and 0 size.
* Remove tests for libunicodeOwen Taylor2000-06-211-1/+0
| | | | | | | | | | | | Wed Jun 21 12:11:56 2000 Owen Taylor <otaylor@redhat.com> * configure.in: Remove tests for libunicode * pango/utils.[ch]: Removed. The functions from here are now in GLib. * **.[ch]: Removed use of libunicode and utils.c in favor of Unicode functions in GLib. Requires latest GLib from CVS.
* Memory management functions for PangoItem.Owen Taylor2000-03-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mon Mar 13 10:54:48 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-item.[ch]: Memory management functions for PangoItem. * pango/*.[ch]: Random constification. * pango/pangox.c pango/pango-layout.c pango/pango-context.c: Add an extra_attrs field to PangoItem. Use this to handle underlining for PangoLayout. * examples/viewer.c (reload_font): Make paragraphs global to save the complexity of passing it around all over the place. * pango/pango-layout.[ch] (pango_layout_context_changed): Add a function to reset the layout on changes to the layout's context. * pango/pangox.c (pango_x_make_matching_xlfd): Prefer bitmap to scaleable if the discrepancy is < 1 pixel. (Probably not the ideal criterion.) * pango/pangox.c (pango_x_font_map_for_display): Fix resolution computation error. * pango/pango-layout.c (pango_layout_check_lines): Handle text with embedded newlines. * pango/pangox.c (pango_x_render_layout): Fix y to refer to the top of the layout, not the baseline of the first line. * pango/pango-layout.c (process_item): Don't wrap if width is set to -1. * Makefile.am configure.in **/*.[ch]: move libpango/ directory and fix all headers to install under include/pango/
* Make refcounted.Owen Taylor2000-02-161-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wed Feb 16 16:39:46 2000 Owen Taylor <otaylor@redhat.com> * libpango/pango-coverage.c (pango_coverage_get): Make refcounted. * libpango/modules.c (struct _PangoEnginePair): Since we don't currently unload engines, cache loaded engines. (Not really quite satisfactory, but should work OK) * libpango/pango-context.c (pango_context_get_font_description): Added a global font description. * libpango/modules.c (_pango_find_map): Allow NULL language tags. * libpango/pango-context.c (pango_itemize) examples/viewer.c: Switch itemize over to take a PangoAttrList. * examples/viewer.c: Conform to changes in itemization interface * libpango/font.[ch]: Add a compare function for FontDescription * libpango/pango-attributes.[ch]: Change the iteration iterface to be more convenient. * libpango/pango-context.[ch]: Add the ability to set a default font. * libpango/pango-context.[ch]: Take the font for itemization from the attributes on the text. * libpango/pangox.c: Cache currently loaded fonts, and cache coverages.
* Initial revisionOwen Taylor2000-01-131-0/+48