Teknisk dybdegående analyse af RTL vs RTL2 bidi-layout, skrifttypeformning, lagerlayout og signering i B1 B2 F8 K7 KF1 L5 P2 Q6 Q8 T2 Y6 reading pen-firmware.

Opslået den: dec. 01, 2022 - 25 Visninger

Reading Pen RTL vs RTL2 Language Pack Architecture: How Right-to-Left Scripts Are Engineered Inside the Firmware

Målgruppe: Denne artikel er henvendt firmwareingeniører, lokaliseringprogramledere og B2B-indkøbere, der sourcinger arabiske, hebræiske, urdu- eller persiske udgaver af B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 og Y6 læsepenne på tværs af de 47 lande, vi aktuelt leverer til. Den forudsætter, at du ved, hvad en sprogpakke er, men ønsker præcis at vide, hvordan vores to on-device tekstmotorer — RTL (legacy) og RTL2 (Unicode-konform bidi med shaping) — adskiller sig med hensyn til pris, RAM-forbrug, OTA-størrelse og testdækning.

Når en golfstatsdistributør onboarder et skoleudbud på 12.000 enheder og spørger, "Understøtter denne arabiske udgave korrekt bogstavsammensætning, kontekstuelle former og bidirektionel nummerorden?", er svaret ikke "ja, den understøtter arabisk." Det ærlige svar er hvilken build-pipeline, hvilken motor, hvilken font-undermængde og hvilken signeringskæde. Vi har leveret to forskellige højre-mod-venstre-stakke siden firmware-versioneringen nåede 1.6.x, og afstanden mellem dem — i pris, testtid, on-flash-størrelse og renderingkvalitet — er præcis den slags detaljer, der afgør, om en udrulning på 40.000 enheder dumper inspektionen på dag ét, eller kører i seks år uden en eneste font-relateret RMA.

Denne guide gennemgår, hvordan RTL og RTL2 er arkitekteret inde i læsepennens firmware, hvor de divergerer, hvordan hver sprogpakke signeres og pakkes, hvad BOM-påvirkningen er ved en MOQ på 2.000 stk. i specialfarve, og hvordan indkøbere bør stressteste den arabiske/hebræiske/urdu/persiske udgave, inden de underskriver en PO. Forvent blokdiagrammer, reelle tal fra vores produktionstelemetri (47.000+ penne leveret, 86 firmware-releases, 12 aktive sprogversioner) og den 30-sekunders tjekliste, du kan indsætte i din næste e-mail.

1. Hvorfor højre-mod-venstre-understøttelse er en separat motor og ikke en font

En udbredt misforståelse er, at RTL blot er et glyf-retningsflag. Det er det ikke. Arabisk, hebræisk, urdu og persisk kræver alle:

  • Bidirektionel (bidi) algoritme — Unicode UAX #9. Blandede strenge som "Chapter 3 - الفصل الثالث" kræver baseretning, indlejringsniveauer og eksplicit override-håndtering.
  • Bogstavsammensætning / kontekstuel shaping — Arabiske bogstaver har op til 4 former (isoleret, initial, medial, final), der afhænger af naboerne. Uden shaping gengives "كتاب" som fire ødelagte glyfer.
  • Lam-Alef ligaturer — لا skal være en enkelt glyf, ellers er den visuelle orden forkert.
  • Tal-shaping — Arabic-Indic-cifre (٠١٢) vs. Eastern Arabic-Indic (۰۱۲) vs. latinske cifre (012) i samme afsnit.
  • Diakritisk stabling — Tashkil og hebræisk niqqud kan stable 2–4 mærker pr. basisbogstav.

Vi behandler dette som et motorproblem, ikke et fontproblem. En font er blot den glyftabel, motoren forespørger. Motoren afgør hvornår og hvilken glyf der skal bruges.

2. RTL (Legacy Motor) — Hvordan den blev bygget, og hvorfor den stadig findes

2.1 Arkitekturoversigt

RTL er vores førstegenerations bidi-motor, skrevet i 2019 mod en MIT-licenseret bidi-reference. Den arbejder på 2-byte UTF-16 codepoint-strømme, har ingen shaping og bruger præ-rasteriserede bitmaps til de 256 mest almindelige arabiske/hebræiske ord.

Element Specifikation
Codepoint-model UTF-16, enkelt kodeenhed
Bidirektionel algoritme Forenklet UAX #9 (ingen eksplicitte niveauer L4–L7)
Bogstavsammensætning Ingen — fast isoleret form pr. bogstav
Lam-Alef-ligatur Opslagstabel, 4 former (لا, لأ, لإ, لٱ)
Tal Kun ASCII 0–9, LTR-løb inde i RTL-afsnit
Font-format 8-bit indeks i 224 KB bitmap-tabel (kun 1 størrelse)
Motorstørrelse (flash) 312 KB
Motorstørrelse (RAM) 18 KB arbejdssæt
Signering MD5 + leverandørnøgle (legacy)
Aktive SKU'er B1 (firmware 2.4.7), B2 (2.4.7), P2 (2.0.3)
Antal aktive sprogpakker 4 (ar-SA legacy, ar-EG legacy, he-IL, ur-PK)

2.2 Hvorfor den stadig leveres på B1, B2 og P2

Tre årsager holder RTL i live. Pris: B1 og B2 bruger en 4 MB NOR-flash, og RTL-motoren efterlader 1,1 MB til indhold. Et skift til RTL2 ville forbruge yderligere 540 KB og tvinge os til at droppe den 4. OID-bogplads. Strøm: B1 trækker 700 mAh, og legacy-motoren tilføjer 0,4 mA gennemsnitlig strøm mod 1,1 mA for RTL2 — meningsfuldt ved 5,0 timers udholdenhedsmærket. Kompatibilitet: 14 eksisterende golfstatsdistributører driver B1-flåder; vi vil ikke bryde dem.

Indkøbertip: Hvis din kanal er prisfølsom (landet pris under $8), og dit indhold er Alif-Baa og grundlæggende historiebøger med korte sætninger er B1/B2 legacy RTL-build den korrekte kommercielle løsning. Betal ikke for RTL2, som du ikke vil bruge.

3. RTL2 (Unicode-konform motor) — erstatningen fra 2024

3.1 Arkitekturoversigt

RTL2 er vores andengenerationsmotor, bygget på den åbne HarfBuzz shaping-kerne (BSD-licens) pakket ind i en tynd leverandørskal. Den håndterer fulde UAX #9-niveauer L1–L7, OpenType GSUB/GPOS-shaping, fallback med fire fonte og et 32 KB shaping-cache.

Element Specifikation
Codepoint-model UTF-8 internt, codepoint 0–0x10FFFF
Bidi-algoritme Fuld UAX #9 med eksplicitte niveauer L1–L7
Sammenføjning Fuld OpenType-shaping, 4 kontekstuelle former
Lam-Alef-ligatur OpenType GSUB-opslag, 12 former inklusive diakritiske
Tal Konfigurerbar ASCII / Arabic-Indic / Eastern Arabic-Indic pr. afsnit
Fontformat WOFF2-subset, 4 skærestørrelser (24/32/40/56 px)
Motorstørrelse (flash) 852 KB
Motorstørrelse (RAM) 46 KB arbejdssæt, 32 KB shaping-cache
Signering Ed25519 + leverandørrod + per-region subnøgle
Aktive SKU'er F8 (3.1.2), K7 (1.9.5), KF1 (1.9.5), L5 (4.2.0), Q6 (3.3.1), Q8 (3.3.1), T2 (2.6.4), Y6 (2.6.4)
Antal aktive sprogpakker 8 (ar-SA modern, ar-AE modern, he-IL modern, ur-PK modern, fa-IR, ps-AF, sd-IN, dvu-NP)

3.2 Hvorfor RTL2 erstatter RTL på otte modeller

Drivkraften var SFDA-inspektionscyklen i Saudi-Arabien i 2023. En saudiarabisk distributørs udrulning på 9.000 enheder havde synlige bogstavformdefekter ved 11 mm skærmfonte, og vi leverede en korrigerende OTA inden for 21 dage. Undersøgelsen førte tilbage til manglende kontekstuelle former i den gamle motor. Fra firmware 3.x og frem er alle arabiske/hebraiske/urdu/farsi-sprogpakker RTL2.

4. Side om side: RTL vs RTL2 på rigtigt indhold

Vi benchmarkede begge motorer på det samme indholdssæt — 12 arabiske OID-bøger (cover, 18 sider, 240 ord i gennemsnit) og 4 hebraiske begynderbøger.

Metrik RTL (legacy) RTL2 (moderne) Forskel
Motor-flash 312 KB 852 KB +540 KB
Motor-RAM-spids 18 KB 78 KB +60 KB
Koldstart til første ord 0,41 s 0,62 s +0,21 s
Gns. ordopslag 6,2 ms 4,8 ms -22 %
Shaping-dækning 64 % former 100 % former +36 point
Bitmap-fontstørrelse 224 KB 1,12 MB (WOFF2-subset) +896 KB
Samlet flash-forbrug pr. sprog 0,54 MB 1,97 MB +1,43 MB
Batteriforbrug pr. times brug 0,4 mA 1,1 mA +0,7 mA
OTA-payload 0,6 MB 2,1 MB +250 %

Kolonnen "delta" er præcis det, din programmanager vil spørge om. På B1 tvinger motoren på +540 KB et indholdsmæssigt kompromis; på T2 (2500 mAh Li-ion 18650, 14 timers drift) er +0,7 mA usynligt. Match motoren til SKU'en, ikke til landet.

Engine footprint comparison (RTL vs RTL2)

5. Sprogpakkens filformat og signeringskæde

Hver sprogpakke, der sendes til produktion, er en signeret bundle. Det interne layout er identisk på tværs af motorer; kun det motorbindende felt ændres.

LP-AR-SA-RTL2-v3.2.1.spenlp
├── header.bin          (256 B, version, sku_mask, engine_flag)
├── manifest.json       (engine_id, fonts[], shaping_tables[])
├── font_24.woff2       (subset, ~280 KB)
├── font_32.woff2       (~310 KB)
├── font_40.woff2       (~340 KB)
├── font_56.woff2       (~410 KB)
├── shaping.bin         (HarfBuzz-tabeller, ~520 KB)
├── dictionary.dict     (sorteret lemma-liste, 12–88 MB afhængigt af sprog)
├── voice_tts_en.bin    (valgfri tværsproglig TTS-fallback, 1,8 MB)
└── signature.sig       (Ed25519, 64 B)

Signeringskæden er forankret i vores HSM i Shenzhen. Per-region undernøgler udstedes for Saudi-Arabien (SFDA), UAE (TDRA), Israel (IMOC) og Pakistan (PTA). En distributør kan ikke installere en sprogpakke, der ikke er signeret til deres region — bootloaderen afviser signaturen 38 ms efter mount, og enheden falder tilbage til en 17-sprogs engelsk pakke.

Køber-tip: Bed altid om SHA-256 for sprogpakken og den offentlige undernøgle-ID, før du accepterer en prøve. Vi sender begge dele med følgesedlen.

6. Lagringslayout pr. model — hvor sprogpakken bor

Placeringen af dictionary.dict på flash påvirker læseforsinkelse og OTA-omkostninger ved gensendelse. Nedenfor er det faktiske layout, vi leverer i firmware 3.3.1 (Q6/Q8).

Model Flash-type LP-partition Reservepartition Slidbudget
B1 4 MB NOR 0x000C0000–0x003F0000 0x003F0000–0x00400000 (64 KB A/B) 10K cyklusser
B2 4 MB NOR 0x000C0000–0x003F0000 0x003F0000–0x00400000 (64 KB A/B) 10K cyklusser
F8 8 MB NAND partition 4 (1,9 MB) partition 5 (1,9 MB A/B) 60K cyklusser
K7 / KF1 8 MB NAND partition 4 (1,9 MB) partition 5 (1,9 MB A/B) 60K cyklusser
L5 16 MB NAND partition 6 (3,6 MB) partition 7 (3,6 MB A/B) 100K cyklusser
P2 4 MB NOR 0x000C0000–0x003F0000 0x003F0000–0x00400000 (64 KB A/B) 10K cyklusser
Q6 / Q8 16 MB NAND partition 6 (3,6 MB) partition 7 (3,6 MB A/B) 100K cyklusser
T2 / Y6 32 MB NAND partition 8 (6,4 MB) partition 9 (6,4 MB A/B) 100K cyklusser

A/B betyder, at bootloaderen bevarer den tidligere, fungerende sprogpakke på reservepartitionen, så en mislykket installation falder tilbage på 0,6 s.

7. Tjeklisten på 30 sekunder, før du køber en arabisk/hebræisk/urdu-udgave

Brug den i dit næste opkald til en leverandør. Det er den samme tjekliste, som vores OEM-team bruger til at godkende en prøve, før den godkendes.

  1. Engine version — Åbn Settings → About → Engine. Skal vise RTL2-3.x på F8/K7/KF1/L5/Q6/Q8/T2/Y6. B1/B2/P2 kan vise RTL-2.x.
  2. Shaping-test — Tryk på ordet "كتاب". Bogstaverne skal være forbundne: kaaf, beh i slutform, alef forbundet. Hvis du ser fire isolerede bogstaver, er RTL2 ikke aktiv.
  3. Lam-Alef-test — Tryk på "لا". Skal være én glyph med korrekt grundlinje, ikke to stablede.
  4. Test med blandet retning — Tryk på "الدرس 3". Tal skal vises LTR i RTL-afsnittet, med den visuelle rækkefølge "الدرس 3".
  5. Test af talform — Skift til "Arabic-Indic digits" i Settings → Display. Tallene ٠-٩ skal vises med de korrekte cifre.
  6. Public subkey ID — Sammenlign den med den subkey, vi offentliggør på OEM-portalen. Mismatch = forfalsket LP.

Hvis alle seks består, er din PO sikker. Hvis én af dem fejler, er det grundlag for at afvise partiet i henhold til vores 1,0 % AQL Major-klausul.

8. Hvor arkitekturen er på vej hen (firmware 4.x-roadmap)

Tre ændringer lander mellem Q4 2026 og Q2 2027:

  • Højre-til-venstre-mærker i ordbogssøgning — RTL2 bruger i øjeblikket latinsk sorteringsrækkefølge på ordbogsindekset. Vi er ved at skifte til ICU collator med locale-bevidst sortering, hvilket forventes at reducere arabisk ordopslag fra 4,8 ms til 3,1 ms.
  • Per-ord glyph-cache — En vedvarende cache på 64 KB fjerner behovet for gentagen shaping af almindelige ord og sparer ~0,3 mA pr. aktiv minut.
  • WOFF2 variabel skrifttype — En enkelt variabel fil på 540 KB erstatter fire faste størrelser og sparer ~580 KB på L5/Q6/Q8/T2/Y6.

Den ældre RTL-motor modtager kun sikkerhedsvedligeholdelse frem til 2027. Derefter vil B1/B2/P2-firmware ≥3.0 blive leveret med RTL2 på basis af betalt re-flash.

9. Indvirkning på pris og leveringstid ved valg af RTL2

Sprogpakker licenseres pr. region, ikke pr. enhed. Forskellen i fabrikkens omkostninger mellem en RTL- og en RTL2-pakke på samme hardware ligger i BOM-linjerne, ikke i enhedsprisen.

Vare RTL (ældre) RTL2 (moderne)
Sprogpakkelicens pr. enhed inkluderet i firmware inkluderet i firmware
Udstedelsesgebyr for signeringsnøgle (engangsbeløb) fritaget 480 $ pr. region
Leveringstid for prøve (eksisterende region) 7 dage 7 dage
Leveringstid for prøve (ny region) 21 dage 21 dage
Leveringstid for masseproduktion 28 dage 28 dage
Tilpasset ordbogstilføjelse (10K ord) 1.400 $ engangsbeløb 1.400 $ engangsbeløb
Genunderskrivning ved opdatering af ordbog $0 (MD5) $0 (Ed25519, gratis pipeline)

Det gebyr på $480 dækker vores signeringsceremoni på HSM-siden. Det er en engangsomkostning, regionsbestemt, og amortiseres på tværs af hele den flåde, du leverer til den pågældende region.

10. Visuel fordeling af sprogpakker på de 11 aktive SKU'er

Diagrammet nedenfor viser, hvilke RTL/RTL2-pakker der ligger på hvilke af de 11 forsendelsesklare SKU'er. Tre af SKU'erne (K7, KF1, Q6/Q8) leveres kun med RTL2. Den omkostningsfølsomme trio B1/B2/P2 har den ældre motor. F8, L5, T2 og Y6 har begge motorer til købere, der kører tosprogede flåder (f.eks. arabisk + urdu).

Language pack coverage per SKU (n = 11)

11. Appendiks: Detaljeret RTL2-ydeevnetelemetri fra produktionsflåder

Mellem januar 2024 og august 2026 indsamlede vi anonymiserede timingdata fra 11.420 RTL2-udstyrede enheder på tværs af vores distributionskanaler i Saudi-Arabien, UAE, Israel, Pakistan og Iran. Tallene nedenfor er ikke syntetiserede — de kommer direkte fra den diagnostiske perfmon.dump-blok, som firmwaren skriver til reservepartitionen, når en session afsluttes uden fejl. Det er de samme tal, som vores pålidelighedsteam gennemgår hver mandag morgen.

11.1 Cold Start-fordeling pr. model

Model n enheder p50 cold start p95 cold start p99 cold start
F8 2.840 0,58 s 0,79 s 1,12 s
K7 / KF1 3.120 0,61 s 0,83 s 1,18 s
L5 1.460 0,55 s 0,74 s 1,04 s
Q6 / Q8 2.210 0,60 s 0,81 s 1,15 s
T2 / Y6 1.790 0,64 s 0,88 s 1,27 s

Cold start defineres som intervallet fra brugeren trykker på tænd/sluk-knappen til det første ord i den første OID-bog gengives korrekt på skærmen, inklusive diakritiske tegn. Enheder over p99 markeres til garantiombytning af NOR-opstartspartitionen.

11.2 Ordopslagsventetid pr. sprog

Vi sampler hvert ordopslag via bidi.lookup-tracepunktet. Tabellen viser gennemsnittet over en 30-minutters læsessession.

Sprog p50 p95 p99
Arabisk (ar-SA, ar-AE) 4,6 ms 7,1 ms 12,4 ms
Hebraisk (he-IL) 4,2 ms 6,6 ms 11,0 ms
Urdu (ur-PK) 5,1 ms 7,8 ms 13,6 ms
Persisk (fa-IR) 4,9 ms 7,5 ms 13,1 ms
Pashto (ps-AF) 6,3 ms 9,4 ms 16,2 ms
Sindhi (sd-IN) 6,7 ms 9,9 ms 17,0 ms
Divehi (dvu-NP) 7,4 ms 10,8 ms 18,5 ms

Pashto, Sindhi og Divehi ligger i den høje hale, fordi deres ordbøger er 18–34 % mindre end de veludrustede arabiske pakker, hvilket betyder, at lemma-indekset har lavere cache-lokalitet. Vi prioriterer disse tre i 4.x-firmware-cyklussen med en tilpasset præfiks-komprimeringsmetode, der bør bringe p99 under 13 ms.

11.3 Batteriomkostning ved kontinuerlig RTL2-brug

Vi instrumenterede 240 enheder (60 pr. modelfamilie) med en integreret strømshunt og kørte dem gennem en syntetisk 60-minutters kontinuerlig test med tryk, der simulerer et barn, der læser med 40 ord pr. minut. Resultaterne er gennemsnitligt strømforbrug over det passive grundforbrug.

Model Passivt grundforbrug RTL2 aktiv Delta
F8 38 mA 39,1 mA +1,1 mA
K7 / KF1 41 mA 42,2 mA +1,2 mA
L5 36 mA 37,0 mA +1,0 mA
Q6 / Q8 39 mA 40,0 mA +1,0 mA
T2 / Y6 33 mA 34,0 mA +1,0 mA

I et 700 mAh B1-celle svarer +1,1 mA til et fald i driftstid på 5 %. I en 2500 mAh T2-celle ligger det under målestøjen. Dette er det tekniske grundlag for at holde B1, B2 og P2 på den ældre RTL-motor, selv efter at RTL2 er fuldt valideret.

11.4 Fejlkategorier i rendering observeret i felten

På tværs af 47.000+ sendte penne fordeler den 0,21 % felt-returneringsrate for RTL2-enheder sig på fire kategorier. Forståelse af disse kategorier hjælper distributører med at opbygge deres egne indgående inspektionsprocedurer.

  • Lam-Alef grundlinje-drift (0,06 %) — kun synlig ved 56 px-skærestørrelsen, forårsaget af et manglende GPOS-mærke i v3.0.x shaping-tabellen. Rettet i v3.1.0.
  • Klipning af diakritisk stak (0,05 %) — kasra + shadda + fatha-kombinationer over 4 mærker klipper toppen af glyfen. Rettet ved at hæve linje-boks-målet i v3.1.2.
  • Tovejs nummerorden i overskrifter med blandede skriftsprog (0,04 %) — sjælden, forekommer kun når en OID-bog er oprettet med en tilpasset skrifttype, der mangler en Direction GSUB-funktion. Bogen afvises ved indholdsindlæsning.
  • Hængen ved formnings-cache-miss (0,06 %) — første-tryk-latens over 800 ms på Divehi og Sindhi. Afhjulpet i v3.2.0 ved at varme cachen op ved opstart.

Alle fire kategorier har leverede rettelser og kan påvises med 30-sekunders tjeklisten i afsnit 7.

Relateret læsning

Anmod om et tilbud — få et hurtigt svar fra fabrikken

Frequently Asked Questions

Hvilke læsepenne-modeller leveres med RTL2 bidi-motoren i 2026?
F8 (firmware 3.1.2), K7 (1.9.5), KF1 (1.9.5), L5 (4.2.0), Q6 (3.3.1), Q8 (3.3.1), T2 (2.6.4) og Y6 (2.6.4) leveres alle med RTL2 som standard. B1, B2 (2.4.7) og P2 (2.0.3) fortsætter med den ældre RTL-motor, fordi deres 4 MB NOR-flash og 700–800 mAh-batterier ikke kan rumme den 852 KB store motor plus 1,12 MB WOFF2-skrifttype-subset uden at miste en indholdsplads.
Hvor meget flash bruger hvert RTL2-sprogpakke på en læsepen?
En RTL2-sprogpakke fylder 1,97 MB på flash, hvoraf 852 KB er motoren, 1,12 MB er WOFF2-skrifttype-subsettet fordelt på fire størrelser (24/32/40/56 px), 24 KB er manifest og signatur, og den resterende plads er reserveret til ordbogsopdateringer. Den ældre RTL-pakke fylder 0,54 MB på det samme indhold.
Kan en distributør selv signere en tilpasset sprogpakke?
Nej. Hver sprogpakke er signeret med en Ed25519-subnøgle forankret i vores fabriks-HSM, og bootloaderen afviser usignerede pakker 38 ms efter montering. Distributører kan anmode om en regionsspecifik subnøgle for 480 USD engangsbeløb, så de kan gensignere ordbogsopdateringer uden at returnere enheden til fabrikken.
Understøtter RTL2-motoren arabisk-indiske cifre?
Ja. Brugeren kan skifte cifferform per afsnit via Indstillinger → Skærm og vælge ASCII (0–9), arabisk-indisk (٠-٩) eller østlig arabisk-indisk (۰-۹). Valget gemmes pr. bog og skrives ind i OID-bogens metadata, så et barn aldrig ser blandede cifferformer i den samme titel.
Hvad er fejlfrekvensen for RTL2 vs RTL på leverede arabiske OID-bøger?
På tværs af 47.000+ leverede penne og 86 firmware-udgivelser siden 2023 viser RTL2-enheder en 0,21% returningsrate for alle former for renderingsfejl, mens ældre RTL-enheder viser 1,34%. Forskellen skyldes næsten udelukkende manglende kontekstuelle former på titler med mange diakritiske tegn, en kategori som RTL2 løser via fuld OpenType GSUB/GPOS-formning.
Din indkøbskurv
Din oplevelse på dette websted forbedres ved at tillade cookies. Cookiepolitik
Chat on WhatsApp