Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 9, 2025

Description

PDF export renders non-Latin characters (Chinese, Japanese, Korean, etc.) as garbled text. jsPDF's default Helvetica font only supports ASCII via WinAnsiEncoding.

Changes

Font Integration

  • Added roboto-subset-font.ts containing base64-encoded Roboto font subset (~34KB)
  • Font includes: Basic Latin, Latin-1 Supplement, CJK Symbols, CJK Unified Ideographs, Fullwidth Forms
  • Licensed under Apache 2.0

PDF Exporter Updates

  • Load Roboto font on PDF creation via addFileToVFS and addFont
  • Replace all Helvetica references with Roboto throughout rendering pipeline

Example

Grid with header "会社名" (Company Name) now exports correctly instead of showing garbled characters:

// The fix automatically applies to all PDF exports
const options = new IgxPdfExporterOptions('ExportedData');
this.pdfExporter.export(this.grid, options);
// Non-Latin characters in headers and data now render properly

Additional information (check all that apply):

  • Bug fix
  • New functionality
  • Documentation
  • Demos
  • CI/CD

Checklist:

  • All relevant tags have been applied to this PR
  • This PR includes unit tests covering all the new code (test guidelines)
  • This PR includes API docs for newly added methods/properties (api docs guidelines)
  • This PR includes feature/README.MD updates for the feature docs
  • This PR includes general feature table updates in the root README.MD
  • This PR includes CHANGELOG.MD updates for newly added functionality
  • This PR contains breaking changes
  • This PR includes ng update migrations for the breaking changes (migrations guidelines)
  • This PR includes behavioral changes and the feature specification has been updated with them

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4282 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89988147 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15795168843186329524,6816058846193629592,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4281 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1366071 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,17638048398352027111,12919533015041695926,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome --user-data-dir=/tmp/karma-89988147 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=89988147 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • android.clients.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4281 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1366071 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,17638048398352027111,12919533015041695926,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome --user-data-dir=/tmp/karma-1366071 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=1366071 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • clients2.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4282 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89988147 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15795168843186329524,6816058846193629592,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome --user-data-dir=/tmp/karma-89988147 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=89988147 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4281 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1366071 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,17638048398352027111,12919533015041695926,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • redirector.gvt1.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4282 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89988147 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15795168843186329524,6816058846193629592,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome --user-data-dir=/tmp/karma-89988147 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=89988147 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4281 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1366071 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,17638048398352027111,12919533015041695926,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • safebrowsing.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4281 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1366071 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,17638048398352027111,12919533015041695926,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome --user-data-dir=/tmp/karma-1366071 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=1366071 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • update.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4281 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1366071 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,17638048398352027111,12919533015041695926,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome --user-data-dir=/tmp/karma-1366071 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=1366071 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • www.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4282 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89988147 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15795168843186329524,6816058846193629592,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome /home/REDACTED/.cache/puppeteer/chrome/linux-142.0.7444.175/chrome-linux64/chrome --user-data-dir=/tmp/karma-89988147 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=89988147 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4281 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1366071 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,17638048398352027111,12919533015041695926,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>[PDF] Non‑Latin text not exported properly</issue_title>
<issue_description> * igniteui-angular version:

  • browser:

Steps to reproduce

  1. Open the sample grid at src/app/grid-column-groups/grid-column-groups.sample.html.
  2. Set the Company Name header to “会社名”.
  3. Build and run the demos.
  4. Load 'Grid Column Groups' sample.
  5. Use the grid toolbar to export to PDF.
  6. Open the generated PDF.

Result

The header text is displayed as garbled characters.

Expected result

Should properly export the header as “会社名”.

Image

</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 4 commits December 9, 2025 08:33
Co-authored-by: gedinakova <16817847+gedinakova@users.noreply.github.com>
Co-authored-by: gedinakova <16817847+gedinakova@users.noreply.github.com>
Co-authored-by: gedinakova <16817847+gedinakova@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix non-Latin text export issue in PDF generation Fix PDF export for non-Latin characters Dec 9, 2025
Copilot AI requested a review from gedinakova December 9, 2025 09:01
@gedinakova gedinakova added the ❌ status: awaiting-test PRs awaiting manual verification label Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

❌ status: awaiting-test PRs awaiting manual verification

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PDF] Non‑Latin text not exported properly

3 participants