Skip to content

Releases

TinyOFD v0.0.4 — Windows x64 + macOS arm64 portable

Choose a tag to compare

@miemiekurisu miemiekurisu released this 17 Oct 04:08

TinyOFD v0.0.4 — Windows x64 + macOS arm64 portable

平台 / Platforms: Windows (x64) and macOS 11+ (Apple Silicon / arm64 only). Portable zips: extract and run, no install. Intel Macs and Linux are not supported.

Download

Platform Asset SHA-256
Windows x64 tinyofd-win64-0.0.4-20261017.zip cfb7543203bc71319ad2212d04bbbcdfe50e3172efd1756cebcf821025d807d1
macOS arm64 tinyofd-macos-arm64-0.0.4-20261026.zip e3fd85efd256f894bf0577b94e6d16fc3c2ec5b08c1e501b9d9bb8ad17a7569f

The macOS zip contains ofdviewer.app, README.md, LICENSE and INSTALL-macOS.txt.

macOS first launch (Gatekeeper)

The macOS bundle is adhoc-signed and not notarized, so Gatekeeper blocks the first launch of a browser-downloaded copy. This is a policy rejection, not a corrupt download or broken signature. Clear it with any of:

  1. xattr -dr com.apple.quarantine /Applications/ofdviewer.app (use the real path), then double-click.
  2. macOS 15+: try to open once, then System Settings → Privacy & Security → "Open Anyway" for TinyOFD Viewer.
  3. macOS 14 and earlier: right-click → Open → Open again in the dialog.

After one successful launch the quarantine flag is gone and later launches work normally. INSTALL-macOS.txt inside the zip documents these steps and checksum verification.

Fixed

  • Resource file names are no longer hard-coded. The PublicRes / DocumentRes names declared in Document.xml <CommonData> (e.g. PublicRes_0.xml from some producers) are resolved to package entries: a leading / is package-root relative, otherwise document-directory relative, with the canonical file name as fallback. The previous fixed Doc_N/PublicRes.xml lookup exited silently, so every embedded font and image declared there was dropped, and text whose TextCode is only meaningful through the embedded font's cmap rendered as garbage.
  • CJK documents whose font is not embedded now render instead of drawing .notdef: a generic CJK system-font substitution is allowed only when the whole glyph run consists of Unicode scalars, so resolution through the substituted face's cmap cannot misplace glyphs. Runs carrying authoritative glyph indices still draw placeholders rather than wrong glyphs.
  • script/clean.ps1 no longer deletes third-party intermediates under _tmp/vendor (-Exclude only matches leaf names, so it never skipped _tmp).
  • ofdviewer.rc version resource was stale (FILEVERSION 0,0,2,0 while the app already reported 0.0.3); now 0,0,4,0, still generated from the single source of truth apps/ofdviewer/ofd_version.pas.

Tooling

  • script/build.ps1 also builds ofd_av_test, the offscreen render/screenshot tool used by the visual regression procedure.
  • script/macos_release_package.sh builds the macOS arm64 zip outside the FileProvider-synced tree, signs and verifies the bundle, then replays a quarantined browser download (extract, re-verify signature, check architecture / minimum macOS / executable bit, and reject leaked FinderInfo/FileProvider xattrs).

Quality

  • 1016 automated tests passing (7 new regression cases: 4 resource-path, 3 font-fallback), heaptrc enabled
  • Visual regression (gemma4:12B vision QA + manual inspection): the previously garbled sample renders crisp Chinese title and body text with no garbled glyphs, no black blocks and no overlap
  • macOS arm64 headless render acceptance across seven samples, no garbled glyphs or black blocks

Notes

  • Windows x64 portable zip: extract and run, no install. Non-commercial license (PolyForm Noncommercial 1.0.0).
  • macOS arm64 portable zip: Apple Silicon only, macOS 11+. Adhoc-signed, not notarized; see the Gatekeeper steps above.
  • Linux is unvalidated.

TinyOFD v0.0.3 — Windows x64 portable

Choose a tag to compare

@miemiekurisu miemiekurisu released this 16 Sep 12:14

TinyOFD v0.0.3 (Windows x64 portable)

Fixed

  • OFD XML: dangling SAX handler on parse failure, attribute leak on depth-limit, stale CGU cache when reopening documents
  • Layer vs non-Layer object parsing drift: PathObject clips, TextObject ReadDirection/CharDirection/LetterSpacing, GroupObject boundary/CTM and Region/VectorShape/PageBlock children
  • Bookmark (outline) parsing leaked the whole outline on malformed XML
  • Text search: UB zero-init of a managed record, O(n^2) page text concat
  • TTF parser hardened against malformed fonts: table-directory/loca/glyph-header out-of-bounds reads, 1-byte overruns in coordinate reads, Integer overflow bypasses, cmap format4 idRangeOffset mis-resolution (glyph lookup was wrong for idRangeOffset != 0)
  • Tab strip: stale hover index after tab removal

Changed

  • Compound-glyph expansion is now budgeted (fixes tiny-font DoS that expanded to millions of points)
  • Delta-value parsing: capped at 65536 with geometric growth (was unbounded O(n^2))
  • App version single-sourced in ofd_version.pas; About box shows real version

Quality

  • 1005 automated tests passing (incl. seeded TTF fuzz and parse-divergence regressions), heaptrc: 0 unfreed blocks
  • Visual regression (gemma4:12B vision QA): 999.ofd / invoice pages pass

Notes

  • Windows x64 portable zip: extract and run. Non-commercial license (PolyForm Noncommercial 1.0.0).

TinyOFD v0.0.2 — First public release (Windows x64)

Choose a tag to compare

@miemiekurisu miemiekurisu released this 15 Aug 07:00

TinyOFD Release Notes

v0.0.2 (2026-08-15)

首个公开版本 / First public release

平台:仅 Windows (x64)(便携 zip,解压即用,无需安装)。
Platform: Windows (x64) only (portable zip, extract and run, no install).

功能 / Features

  • OFD 解析核心(ofdcore,纯 Pascal,无 GUI 依赖)
    Pure-Pascal OFD parsing core (ofdcore, GUI-free)
  • 软件渲染管线(ofdrender):FreeType2 字体、文本、路径填充/描边、渐变、图片合成、裁剪、旋转
    Software render pipeline (ofdrender): FreeType2 fonts, text, path fill/stroke, gradients, image compositing, clipping, rotation
  • LCL 阅读器(ofdlcl + apps/ofdviewer):多标签页、单页/连续页视图、缩略图面板、缩放、滚动、翻页、查找
    LCL reader (ofdlcl + apps/ofdviewer): multi-tab, single/continuous page views, thumbnail panel, zoom, scroll, page navigation, find
  • 懒加载 + 缓存:按需解析页面、缓存渲染结果,打开与翻页流畅
    Lazy loading + caching: pages parsed on demand, render results cached, for smooth open and paging

下载 / Download

  • release/tinyofd-win64-0.0.2-20260815.zip

已知限制 / Known limitations

  • 仅 Windows (x64)。macOS 构建仍有未解决问题,不作为发布版本;Linux 未验证。
    Windows (x64) only. The macOS build still has unresolved issues and is not release-ready; Linux is unvalidated.