summaryrefslogtreecommitdiff
path: root/pango
Commit message (Collapse)AuthorAgeFilesLines
* g-i: add missing since annotationsBilal Elmoussaoui2021-12-101-0/+6
|
* serializer: Use gtk_json_parser_select_stringnewer-json-parserMatthias Clasen2021-12-091-101/+315
| | | | Take advantage of the new parser api.
* json: Fix up select_stringMatthias Clasen2021-12-091-1/+1
| | | | There was a copy-paste error here.
* Update to a newer json parserMatthias Clasen2021-12-092-22/+124
|
* Merge branch 'broken-underlines' into 'main'Matthias Clasen2021-12-091-9/+16
|\ | | | | | | | | | | | | fc: Handle fonts with broken metrics better Closes #616 See merge request GNOME/pango!537
| * fc: Handle fonts with broken metrics betterMatthias Clasen2021-12-081-9/+16
| | | | | | | | | | | | | | | | | | It seems that some fonts don't have meaningful values for underline and strikethrough metrics. Ignore these font-provided values if they are zero. Fixes: #616
* | layout: Handle a corner caseMatthias Clasen2021-12-091-1/+3
| | | | | | | | | | | | | | | | | | We can't break in a tab run. This fixes an assertion found by afl. Testcase included. Fixes: #638
* | Fix break-latin.cMatthias Clasen2021-12-081-21/+19
|/ | | | | | | | The loop termination condition in break_latin() was incorrect. Fix this by copying the loop setup from break_arabic(). Fixes #636
* Merge branch 'fix-tabs-nowrap' into 'main'Matthias Clasen2021-12-071-1/+26
|\ | | | | | | | | | | | | Fix line width computation Closes #635 See merge request GNOME/pango!535
| * Fix line width computationMatthias Clasen2021-12-061-1/+26
| | | | | | | | | | | | | | | | | | | | We an only use the line_width - remaining_width shortcut if we are actually maintaining remaining_width, i.e. not if we don't wrap lines. Testcase included. Fixes: #635
* | Plug a memory leak in the json parserMatthias Clasen2021-12-061-0/+2
| |
* | Update the json parserMatthias Clasen2021-12-053-239/+763
|/ | | | | This includes better error reporting, with error locations.
* Fix a crash in tab handlingtab-crash-fixMatthias Clasen2021-12-051-3/+19
| | | | | | | | | | When we uninsert the current tab run, we need to reset our tab state to prevent last_tab->glyphs to become a dangling pointer. Test included. Fixes: #634
* tabs: Fix build with clang in mingw Biswapriyo Nath2021-12-031-0/+1
| | | | Include stdlib.h for qsort function declaration. This fixes the error: implicit declaration of function 'qsort' is invalid in C99
* doc: fixesMatthias Clasen2021-12-024-5/+5
|
* jsonparser: Plug a memory leakserializer-rewriteMatthias Clasen2021-12-021-0/+2
|
* Add pango_font_deserializeMatthias Clasen2021-12-022-0/+89
| | | | | This will make the font serialization useful in GTK, where we serialize fonts in node files.
* Small fixesMatthias Clasen2021-12-022-8/+4
| | | | | Properly document deserialization errors, and drop unused enum values.
* assorted serializer fixesMatthias Clasen2021-12-021-29/+23
|
* serializer: Move all error handling to the parserMatthias Clasen2021-12-021-222/+108
| | | | Just let the parser carry the error.
* Add gtk_json_parser_set_errorMatthias Clasen2021-12-022-0/+12
|
* serializer: Replace json-glibMatthias Clasen2021-12-026-855/+2484
| | | | Replace json-glib by a homegrown json parser/printer.
* tabs: Add a missing setterMatthias Clasen2021-12-022-0/+23
| | | | | Add pango_tab_array_set_positions_in_pixels, to help the serializer out.
* Fix up tab sizingtab-speedupMatthias Clasen2021-12-021-23/+18
|
* layout: Small optimizationMatthias Clasen2021-12-021-25/+3
| | | | | Don't calculate line width the hard way when we can do it much easier.
* layout: Optimize tab handlingMatthias Clasen2021-12-011-1/+1
| | | | | | We don't need to iterate the entire tab array every time, we just continue from the previous tab stop position.
* layout: Call pango_tab_array_sortMatthias Clasen2021-12-011-3/+6
| | | | | We want to optimize access to tab stops, and will assume they are ordered.
* layout: Some restructuring of tab handlingMatthias Clasen2021-12-011-54/+43
| | | | Introduce a LastTab struct, and use it.
* Add pango_tab_array_sortMatthias Clasen2021-12-012-0/+28
| | | | | A utility function to ensure tab stops are in increasing order.
* tabs: Tweak string formatMatthias Clasen2021-11-291-1/+1
| | | | Use newlines to separate tabs, rather than spaces.
* tabs: Add a decimal pointMatthias Clasen2021-11-295-23/+137
| | | | | | | This is useful for PANGO_TAB_DECIMAL. Implement this in PangoLayout, in the serializer, and update tests.
* layout: Implement tab alignmentsMatthias Clasen2021-11-291-57/+201
| | | | | | | | | | | | | Implement the other tab alignments by adjusting the tab width as we go. Based on an old patch by Itai Bar-Haim. This also includes a fix for the previously supported left tab alignment in the presence of indent. Fixes: #34
* serializer: Support tab alignmentsMatthias Clasen2021-11-291-3/+31
| | | | | | | | | Serialize tab alignment in addition to tab position. We still accept the old format and default alignment to left. Update testserialize and layout tests for this.
* tabs: Add other tab alignmentsMatthias Clasen2021-11-292-13/+52
| | | | | Add right, center, decimal tab alignments and support them in serialization. They are not implemented yet.
* docs: Add a note on tabsMatthias Clasen2021-11-291-1/+2
| | | | | Explain that tabs really only work with PANGO_ALIGN_LEFT.
* Never show variation selectorsMatthias Clasen2021-11-282-4/+45
| | | | | | | | Even when we show ignorables, we still want to ignore variation selectors and other ignorables that we don't have nicks for. Test included.
* Fix line heights in improper gravitiesgravity-fixesMatthias Clasen2021-11-271-1/+1
| | | | | | | | | | | Without this, we end up with line height being zero in gravity north or west. The visible symptom is that wrapped lines are drawn on top of each other with line-height != 0. Affected tests have been updated. Fixes: #631
* Fix misplaced glyphs in gravity eastMatthias Clasen2021-11-271-1/+4
| | | | | This was showing up as glyphs placed outside their logical extents.
* font: Avoid cosmetic uglinessMatthias Clasen2021-11-271-2/+3
| | | | | | | | When setting variations to "", font descriptions would add an ugly useless " @" at the end of their serialization. Avoid that. Test included.
* Avoid an out-of-bound accessMatthias Clasen2021-11-271-1/+1
| | | | | We can only use the width of the previous char if we are not at the first char. Found by asan.
* Make sure glyphinfo is fully initializedMatthias Clasen2021-11-261-0/+1
| | | | | The alternative is random test failures, now that we check all these fields in test-layout.
* Merge branch 'hinted-metrics-fixes' into 'main'Matthias Clasen2021-11-262-4/+30
|\ | | | | | | | | | | | | Hinted metrics fixes Closes #626 See merge request GNOME/pango!518
| * Calculate hinted font height based on the hinted extentsSebastian Keller2021-11-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | The previous code was calculating the rounded up version of the difference between the unhinted ascender and uninted descender. This however would only result in the correct height if both unhinted extentss together only differ by less then an a Pango unit from their hinted counterparts. Otherwise the resulting height would be 1 unit too short. Fix this by using the difference between the hinted extents as height. Fixes: https://gitlab.gnome.org/GNOME/pango/-/issues/626
| * Introduce and use FLOOR and CEIL macros in Pango unitsSebastian Keller2021-11-222-4/+30
| | | | | | | | | | | | | | This replaces the code that was trying to implement those via the ROUND macro. This avoids a potential issue with values that already were on whole units being rounded up to the next whole unit in the code that was implementing CEIL this way.
* | Add a newline to serialization resultsMatthias Clasen2021-11-251-1/+5
| | | | | | | | | | | | | | | | Otherwise editing the output in an editor is likely to make the data not match anymore, since most editors will add a final newline. Update all tests
* | serializer: Include unknown glyphs countMatthias Clasen2021-11-241-0/+3
| |
* | Add pango_font_serializeMatthias Clasen2021-11-242-0/+58
| | | | | | | | | | | | | | Another debug api. This function produces a serialization of a font that is enough to uniquely identify the font. This is more detailed than what pango_font_describe creates.
* | serializer: Support a "comment" fieldMatthias Clasen2021-11-241-0/+47
| | | | | | | | | | | | Json doesn't have comments, so we have to add an explicit comment value. This will be useful to describe what test cases are about.
* | Optionally serialize outputMatthias Clasen2021-11-242-1/+384
| | | | | | | | | | | | | | If requested, serialize lines, runs, and log attrs. This will let us use the serialization format to record not just the test inputs, but outputs as well.
* | Add a way to get the font matrixMatthias Clasen2021-11-243-0/+44
| | | | | | | | | | | | Add some private api for the serializer to get the font matrix. This is needed to let the serializer write a unique fingerprint for the font.