Age | Commit message (Collapse) | Author |
|
|
|
It's implicit in the 'top' box.
|
|
Point to the box struct rather than its style, so we can look at its
resolved em size. Also make sure to resolve em sizes for inline boxes.
|
|
|
|
|
|
|
|
We will need to split if the color changes, or an image is spliced in.
List item bullets also get their own fz_text element.
|
|
|
|
|
|
Default to "ltr" (unhelpfully, but that's the spec).
Handle ltr, rtl, and auto values.
|
|
And use the same enum for both the internal bidi code and the layout code.
|
|
|
|
In certain simple circumstances, we can bypass harfbuzz shaping and gain
a lot of performance.
|
|
Remove the need for type punning, and make it behave more robustly
for indic languages.
|
|
|
|
|
|
|
|
In particular for html docs we were getting the refcount wrong,
causing us to leak on closedown.
|
|
If a "word" of HTML is split into several fragments by the
string walker (due to glyphs not being available in the same font)
then we'd previously have walked too much of the string when
pulling glyphs out of the harfbuzz buffer.
Only walk as much as we should.
|
|
|
|
Combining marks were being offset in the wrong direction vertically.
|
|
gcc whines about strict-aliasing rules. Tweak the code to avoid
them.
Short version = gcc dislikes accessing the same memory
through different typed pointers unless they are void * or char *.
|
|
Tell Memento to treat all blocks allocated within given harfbuzz
calls as being leaks.
|
|
Also change unsigned char into const char for embedded data.
|
|
Note: does not handle the case where certain classes of characters
prohibit breaking at spaces between them.
|
|
Add code to convert to and from fz_text_language codes from
ISO 639 language strings. No validation is carried out.
|
|
We move to using bidirectional "levels" throughout. This should
give us better behaviour vis-a-vis nested l2r/l2r text. This
also allows us to carry xps levels throughout with no loss of
information.
This also avoids the need to special case numbers.
We accordingly carry more information into fz_text.
As well as wmode, also hold additional details about the text spans.
We now include the directionality of the bidi level text (either as
derived from bidi code, or from the original document (e.g. xps)),
the directionality of text (as specified in the original document
(e.g. html)), and the language of the text (if specified in the
original document).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This algorithm can handle flow nodes that has non-zero width when they
break a line of text. The previous algorithm could not handle this.
This paves the way for supporting soft hyphens.
|
|
This paves the way for supporting soft hyphens.
|
|
|
|
Match naming of fz_moveto/lineto etc for paths.
|
|
|
|
Use the flags when selecting a fallback font.
|
|
We walk the text in a node to shape it in 2 different places
in the code. Reformulate the code so that the 'walking' logic
is commoned up.
|
|
|
|
|
|
Fixes http://bugs.ghostscript.com/show_bug.cgi?id=696004
|
|
fz_fonts gain a 'shaper' field that will be filled in as
required. Use a void * rather than an hb_font_t to avoid
polluting top level include space.
Harfbuff handles mirroring for us, so lose the 'mirror'
fields. This simplifies our wrappers around the 'standard'
bidi code in that we don't need to split fragments upon
mirroring.
We do need to split our fragments at script changes though
as harfbuzz only operates on a single font at a time.
Update the html flow structure so that each flow node contains
details of the the direction specified for it in the markup,
the language specified for it in the markup and the script
detected by the bidi code.
Get the bidi code to pass out the script for each fragment
as part of the callback and populate that field in the node.
Ensure that we pass in the markup direction to the bidi
splitting code as the 'base' direction.
When feeding the bidi code, rather than feeding it paragraphs
at a time, break those paragraphs if different parts of them
have different marked up directions.
|
|
|
|
Look up fallback fonts by unicode script, with a flag to select the serif or
sans-serif font style where such variants exist.
Move all builtin fonts into fitz namespace.
|
|
|
|
Note: font->fallback is not reference counted here. The fallback
mechanism is probably going to have to change when we add text shaping.
|
|
|
|
fz_encode_character_with_fallback finds the first font in the fallback
chain that has the glyph encoded, and if none do then try to encode
a bullet character.
|