Podium

The patch is cjk.patch, also in the source zip as docs/cjk.patch.

Chinese, Japanese and Korean names

Podium releases show Chinese, Japanese and Korean (CJK) characters as ?. This page is for people who want those names on the player: download the ready CJK image below, or build one yourself. Either way it is an unsupported image: the Podium author doesn't run it, and problems with it shouldn't be reported as Podium issues.

Download the CJK image

Download Podium 4.5.7 with CJK: ECHOV457.IMG, 5,242,884 bytes, SHA-256 3bc3e1c88ad73068e79b877758517dc0fff4b0f672e2d6d25691bb273149b0f4.

It is Podium 4.5.7 with the recipe below applied, built from the 4.5.7 source. It passed the image tests in an emulator; it hasn't been run on a player. Install it as in Install. It carries glyphs rendered from Noto Sans CJK SC, licensed under the SIL Open Font License 1.1 (https://github.com/notofonts/noto-cjk/blob/main/Sans/LICENSE).

Why releases leave CJK out

What the recipe gives

The characters come from Noto Sans CJK SC at 22 px, the Medium text size.

An album's songs with Japanese and Korean titles, in the simulator
An album's songs with Japanese and Korean titles, in the simulator

Build the image

The recipe targets Podium 4.5.6 and later (it needs the Text size setting's glyph faces). It was built and checked in the simulator and the image tests, not yet on a player. It changes four files: the glyph face list (assets/fonts/glyph_pack.json), the glyph generator (tools/glyph_pack.py) and two font files in src/gfx. docs/cjk.patch holds the change.

  1. Get the source of the Podium release you run: the source zip next to the image on the Podium website, or a clone of the repository at the release tag (for example git checkout v4.5.6).
  2. Install the tools from README.md, "Build and run the simulator" and "Build the firmware": cmake, the Arm GNU toolchain (arm-none-eabi-gcc and binutils), SDL2, clang-format and Python 3 with a virtual environment:

    python3 -m venv .venv && .venv/bin/pip install -r tools/requirements.txt
  3. Download Noto Sans CJK SC Regular 2.004 (16,437,364 bytes) into assets/fonts/noto-cjk/ and check its hash:

    mkdir -p assets/fonts/noto-cjk
    curl -L -o assets/fonts/noto-cjk/NotoSansCJKsc-Regular.otf \
      https://raw.githubusercontent.com/notofonts/noto-cjk/Sans2.004/Sans/OTF/SimplifiedChinese/NotoSansCJKsc-Regular.otf
    shasum -a 256 assets/fonts/noto-cjk/NotoSansCJKsc-Regular.otf

    On Linux use sha256sum. The hash must be 2c76254f6fc379fddfce0a7e84fb5385bb135d3e399294f6eeb6680d0365b74b. The font is licensed under the SIL Open Font License 1.1 (https://github.com/notofonts/noto-cjk/blob/main/Sans/LICENSE), and so is everything rendered from it; keep that license with an image you share.

  4. Apply the change (works in a git clone and in an unpacked source zip):

    git apply docs/cjk.patch
  5. Render the glyph faces. On macOS with MacPorts, point the generator at FriBiDi as the tests do (/opt/local/lib; with Homebrew /opt/homebrew/lib). Without FriBiDi the image still works, but the Inter faces come out slightly different from the committed ones.

    DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib \
      .venv/bin/python tools/glyph_pack.py --config assets/fonts/glyph_pack.json --output src/fonts/packs

    It prints two new faces, cjk_22_a: 6033 glyphs, 1,433,571 bytes and cjk_22_b: 6439 glyphs, 1,460,503 bytes, each with "too big: none".

  6. Build the image:

    cmake --preset release && cmake --build --preset release

    The last line reports glyph faces 3,105,368 bytes; the image is build/release/ECHOVnnn.IMG (ECHOV456.IMG for 4.5.6), 5,242,884 bytes like a release.

  7. Optional: run the simulator with your music to see the names before installing (README.md, "Use your music library in the simulator").

Tests that change

ctest --preset dev is not needed for the image. If you run it, these results are expected after the change:

Install

Install the self-built image as any Podium image: from FiiO's firmware as in docs/user-guide.md, Install, or over Podium as in Updating Podium. Podium installs any Podium image, whatever its version number. Keep a way back (If something goes wrong).

Limitations

Going back to a release

Install the release image (ECHOVnnn.IMG from the Podium website) the same way, as in Updating Podium. The library, settings and favorites stay as they are.