Conversation
PR Summary by QodoAdd Uniscribe complex text shaping and rasterization
AI Description
Diagram
High-Level Assessment
Files changed (10)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can ask Qodo to dismiss a finding you disagree with, with your reason on record |
|
| Filename | Overview |
|---|---|
| Core/Libraries/Source/WWVegas/WW3D2/complextext.h | Implements itemization, cluster-aware font runs, Uniscribe shaping, visual ordering, baseline alignment, and cleanup. |
| Core/Libraries/Source/WWVegas/WW3D2/render2dsentence.cpp | Exposes complex-text detection, measurement, and checked bitmap rasterization through FontCharsClass. |
| Core/Libraries/Source/WWVegas/WW3D2/unicodebidi.h | Determines the first-strong paragraph level over BMP and supplementary UTF-16 characters. |
| scripts/generate_supplementary_bidi.py | Reproducibly generates the supplementary bidi table but lacks the required GPL prologue. |
| Core/Libraries/Source/WWVegas/WW3D2/supplementarybidi.inl | Adds generated Unicode 17 bidi ranges but violates the date-comment and GPL-prologue requirements. |
| Core/Libraries/Source/WWVegas/WWLib/Usp10Loader.h | Extends the dynamically loaded Uniscribe API declarations needed for itemization, layout, and rasterization. |
| Core/Libraries/Source/WWVegas/WW3D2/ww3d.cpp | Unloads the synchronized Uniscribe loader during renderer shutdown. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[UTF-16 text] --> B[Determine first-strong paragraph level]
B --> C[ScriptItemize paragraph]
C --> D[ScriptBreak cluster boundaries]
D --> E[Split runs by item and selected font]
E --> F[ScriptStringAnalyse each run]
F --> G[ScriptLayout visual run order]
G --> H{Measurement only?}
H -- Yes --> I[Return width and height]
H -- No --> J[Draw runs on shared baseline]
J --> K[GdiFlush]
K --> L[Convert bitmap intensity to font raster]
Prompt To Fix All With AI
### Issue 1
Core/Libraries/Source/WWVegas/WW3D2/supplementarybidi.inl:3
**Outdated Copyright Year**
This newly generated comment says `Copyright 2025 Unicode, Inc.`, which violates the repository directive that newly created code comments must not reference dates before 2026. The generator emits the same outdated year, so it and the generated file must be updated before merging.
### Issue 2
scripts/generate_supplementary_bidi.py:1
**Missing GPL Prologue**
This new Python source file begins with a module docstring instead of the GPL license header required for new source files. Add the required prologue here and to the generated `supplementarybidi.inl` file, ideally through the generator, before merging.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "feat(text): Add complex text shaping and..." | Re-trigger Greptile
Adds Uniscribe-based measurement and rasterization to
FontCharsClass. The implementation itemizes a paragraph, preserves its bidirectional state and directional overrides, selects fonts at cluster boundaries, and draws the resulting runs onto a shared baseline.Measurement and rasterization apply the same size limits. The implementation checks allocation dimensions, synchronizes GDI drawing before bitmap access, releases partial results on failure, and unloads Uniscribe during renderer shutdown. Existing UI callers continue using the legacy renderer until the separate integration PR.
Validation
git diff --check.The native harnesses are local validation tools and are not included in this PR.
Implementation developed with AI assistance.