Merged
Conversation
This won't work, because most ID inserted in the global context are in fact local, and should be remapped.
Each "write" pass now return the sub-state it produced instead of mutating a global state.
This may break emojis TODO: check that it doesn't
Also move some more stuff to the catalog module
Not sure that this is a good idea, but it sort of makes the design simpler.
0b9ff11 to
a31ce39
Compare
a31ce39 to
fce86ca
Compare
Collaborator
|
I ran the test suite through my script that renders a PDF using different viewers, and I noticed that the following file doesn't seem to render correctly anymore: Other than that everything else seemed fine, although I admittedly only skimmed it. :) |
Member
Author
|
Thanks, I'll see if I can reproduce and fix. And I will definitely do some more in depth testing before merging. |
af90503 to
dfcf3ef
Compare
PgBiel
added a commit
to tulio240/typst
that referenced
this pull request
May 30, 2024
Refactor frame metadata into tags (typst#4212) Require `Send` and `Sync` for worlds (typst#4219) Optimize counters and state (typst#4223) Add `windows` method to array (typst#4136) Improve `CITATION.cff` file (typst#4201) Fix equation resizing when adding the equation number (typst#4179) `layout` documentation improvements (typst#4196) Allow somewhat arbitrary characters as `mat`, `vec` and `cases` `delim` (typst#4211) Do layout short-circuit in flow instead of realization (typst#4231) Split `BitSet` into two types and make it a bit nicer (typst#4249) Set default value of `raw.theme` to `auto`, and allow setting `raw.theme` to `auto` (typst#4186) Extended cargo installation instructions (typst#4168) Hint for language-region pair on `text.lang` (typst#4183) Improve macro docs (+ Native*Data docs) (typst#4240) Rephrase the sentence on variable scope in Scripting documentation (typst#4250) Refactor `Capable::vtable` to return `Option<NonNull<()>>` (typst#4252) Nicer test helper CSS (typst#4269) Trim weak spacing at line start/end in paragraph layout (typst#4087) Add ability to choose between minified and pretty-printed JSON (typst#4161) Refactor PDF export (typst#4154) Reorder syntax kinds (typst#4287) Fix figure centering (typst#4276) Fix `Default` impls for AST nodes (typst#4288) Bump libc to v0.2.155 (typst#4268) Bump time dependency (typst#4294)
YDX-2147483647
added a commit
to YDX-2147483647/typst
that referenced
this pull request
Jul 19, 2024
Resolves typst#4582 There are two sources of information for `/ToUnicode`: the `glyph_set` recorded while `write_text`, and `cmap` tables of the font. `improve_glyph_sets` leverages the font. It was refactored as a function in typst#4154, but the real code even predates ed6550f (2 years ago). `improve_glyph_sets` was necessary before ad34763, when a `glyph_set` was a list of glyphs, and we had to search the font (again) for their texts. (Each glyph represents a text, which is a Unicode code point or a sequence of code points (e.g. ligature).) In ad34763, the `glyph_set` is refactored to a map from glyphs to texts. Now we have enough information for `/ToUnicode` CMap—no need to search the font. If the glyph… - …represents a single character… - …and is mapped from only one code point: No change. - …and is shared by multiple code points (e.g. CJK unified/compatibility): `/ToUnicode` changes from the largest code points to the first occurrence. - …represents a sequence of characters (e.g. ligature)… - …and they are also encoded as a single code point for compatibility (e.g “fi”/fi): `/ToUnicode` changes from a single compatibility code point (fi) to the sequence (fi). The behaviour in PDF viewers usually does not change. - …and is not encoded in Unicode (e.g. “Th” in Linux Libertine): No change.
1 task
YDX-2147483647
added a commit
to YDX-2147483647/typst
that referenced
this pull request
Jul 19, 2024
…just by deleting `improve_glyph_sets`! There are two sources of information for `/ToUnicode`: the `glyph_set` recorded while `write_text`, and `cmap` tables of the font. `improve_glyph_sets` leverages the font. It was refactored into a function in typst#4154, but the real code even predates ed6550f (2 years ago). `improve_glyph_sets` was necessary before ad34763, when a `glyph_set` was a list of glyphs, and we had to search the font (again) for their texts. (Each glyph represents a text, which is a Unicode code point or a sequence of code points (e.g. ligature).) In ad34763, the `glyph_set` is refactored to a map from glyphs to texts. Now we have enough information for `/ToUnicode` CMap—no need to search the font. If the glyph… - …represents a single character… - …and is mapped from only one code point: No change. - …and is shared by multiple code points (e.g. CJK unified/compatibility): `/ToUnicode` changes from the largest code points to the first occurrence, and fixes typst#4582. - …represents a sequence of characters (e.g. ligature)… - …and they are also encoded as a single code point for compatibility (e.g “fi”/fi): `/ToUnicode` changes from a single compatibility code point (fi) to the sequence (fi). The behaviour in PDF viewers usually does not change. - …and is not encoded in Unicode (e.g. “Th” in Linux Libertine): No change.
YDX-2147483647
added a commit
to YDX-2147483647/typst
that referenced
this pull request
Jul 19, 2024
Resolves typst#4582 …just by deleting `improve_glyph_sets`! There are two sources of information for `/ToUnicode`: the `glyph_set` recorded while `write_text`, and `cmap` tables of the font. `improve_glyph_sets` leverages the font. It was refactored into a function in typst#4154, but the real code even predates ed6550f (2 years ago). `improve_glyph_sets` was necessary before ad34763, when a `glyph_set` was a list of glyphs, and we had to search the font (again) for their texts. (Each glyph represents a text, which is a Unicode code point or a sequence of code points (e.g. ligature).) In ad34763, the `glyph_set` is refactored to a map from glyphs to texts. Now we have enough information for `/ToUnicode` CMap—no need to search the font. If the glyph… - …represents a single character… - …and is mapped from only one code point: No change. - …and is shared by multiple code points (e.g. CJK unified/compatibility): `/ToUnicode` changes from the largest code points to the first occurrence, and fixes typst#4582. - …represents a sequence of characters (e.g. ligature)… - …and they are also encoded as a single code point for compatibility (e.g “fi”/fi): `/ToUnicode` changes from a single compatibility code point (fi) to the sequence (fi). The behaviour in PDF viewers usually does not change. - …and is not encoded in Unicode (e.g. “Th” in Linux Libertine): No change.
YDX-2147483647
added a commit
to YDX-2147483647/typst
that referenced
this pull request
Jul 19, 2024
Resolves typst#4582 …just by deleting `improve_glyph_sets`! There are two sources of information for `/ToUnicode`: the `glyph_set` recorded while `write_text`, and `cmap` tables of the font. `improve_glyph_sets` leverages the font. It was refactored into a function in typst#4154, but the real code even predates ed6550f (2 years ago). `improve_glyph_sets` was necessary before ad34763, when a `glyph_set` was a list of glyphs, and we had to search the font (again) for their texts. (Each glyph represents a text, which is a Unicode code point or a sequence of code points (e.g. ligature).) In ad34763, the `glyph_set` is refactored to a map from glyphs to texts. Now we have enough information for `/ToUnicode` CMap—no need to search the font. If the glyph… - …represents a single character… - …and is mapped from only one code point: No change. - …and is shared by multiple code points (e.g. CJK unified/compatibility): `/ToUnicode` changes from the largest code points to the first occurrence, and fixes typst#4582. - …represents a sequence of characters (e.g. ligature)… - …and they are also encoded as a single code point for compatibility (e.g “fi”/fi): `/ToUnicode` changes from a single compatibility code point (fi) to the sequence (fi). The behaviour in PDF viewers usually does not change. - …and is not encoded in Unicode (e.g. “Th” in Linux Libertine): No change.
YDX-2147483647
added a commit
to YDX-2147483647/typst
that referenced
this pull request
Jul 19, 2024
Resolves typst#4582 …just by deleting `improve_glyph_sets`! There are two sources of information for `/ToUnicode`: the `glyph_set` recorded while `write_text`, and `cmap` tables of the font. `improve_glyph_sets` leverages the font. It was refactored into a function in typst#4154, but the real code even predates ed6550f (2 years ago). `improve_glyph_sets` was necessary before ad34763, when a `glyph_set` was a list of glyphs, and we had to search the font (again) for their texts. (Each glyph represents a text, which is a Unicode code point or a sequence of code points (e.g. ligature).) In ad34763, the `glyph_set` is refactored to a map from glyphs to texts. Now we have enough information for `/ToUnicode` CMap—no need to search the font. If the glyph… - …represents a single character… - …and is mapped from only one code point: No change. - …and is shared by multiple code points (e.g. CJK unified/compatibility): `/ToUnicode` changes from the largest code points to the first occurrence, and fixes typst#4582. - …represents a sequence of characters (e.g. ligature)… - …and they are also encoded as a single code point for compatibility (e.g “fi”/fi): `/ToUnicode` changes from a single compatibility code point (fi) to the sequence (fi). The behaviour in PDF viewers usually does not change. - …and is not encoded in Unicode (e.g. “Th” in Linux Libertine): No change.
This was referenced Oct 5, 2024
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


The PDF exporter now uses a type state to ensure that it is impossible to access context that is not yet available. It also makes extensive use of the
pdf_writer::Chunk::rewrite_intoAPI to have each step being more independent, and thus potentially easier to memoize.The actual behavior of the crate didn't change a lot, everything is just less entangled and hopefully easier to reason about.
TODO:
qpdf --checkon all files generated by the test runner, and no errors were reported.