@glassly/miniapp 0.3.7-dev.906 → 0.3.7-dev.909
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/display/index.d.ts +1 -1
- package/dist/display/index.d.ts.map +1 -1
- package/dist/display/index.js +1 -1
- package/dist/display/index.js.map +1 -1
- package/dist/display/profiles/index.d.ts +1 -1
- package/dist/display/profiles/index.d.ts.map +1 -1
- package/dist/display/profiles/index.js +2 -2
- package/dist/display/profiles/index.js.map +1 -1
- package/dist/display/profiles/rayneo-io.d.ts +11 -1
- package/dist/display/profiles/rayneo-io.d.ts.map +1 -1
- package/dist/display/profiles/rayneo-io.js +73 -3
- package/dist/display/profiles/rayneo-io.js.map +1 -1
- package/dist/display/profiles/types.d.ts +5 -0
- package/dist/display/profiles/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/display/index.ts +1 -0
- package/src/display/profiles/index.ts +7 -2
- package/src/display/profiles/rayneo-io.ts +79 -3
- package/src/display/profiles/types.ts +6 -0
package/dist/display/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* miniapp that wraps text with them gets the rows the glasses will draw.
|
|
9
9
|
*/
|
|
10
10
|
export type { DisplayProfile, FontMetrics, UniformScriptWidths, FallbackConfig, DisplayConstraints, ScriptType, } from "./profiles";
|
|
11
|
-
export { G1_PROFILE, G1_PROFILE_LEGACY, G1_HYPHEN_WIDTH_PX, G1_SPACE_WIDTH_PX, G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX, Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX, NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX, RAYNEO_IO_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX, } from "./profiles";
|
|
11
|
+
export { G1_PROFILE, G1_PROFILE_LEGACY, G1_HYPHEN_WIDTH_PX, G1_SPACE_WIDTH_PX, G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX, Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX, NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX, RAYNEO_IO_PROFILE, RAYNEO_IO_CFW_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX, } from "./profiles";
|
|
12
12
|
export { TextMeasurer } from "./measurer";
|
|
13
13
|
export type { CharMeasurement, TextMeasurement } from "./measurer";
|
|
14
14
|
export { detectScript, isCJKCharacter, isKoreanCharacter, isUniformWidthScript, isUnsupportedScript, needsHyphenForBreak, SCRIPT_RANGES, } from "./measurer";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AACvC,YAAY,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,YAAY,CAAA;AAChE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAA;AACjF,YAAY,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,2BAA2B,EAAC,MAAM,WAAW,CAAA;AAE3G,OAAO,EAAC,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,YAAY,CAAA;AACjF,YAAY,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAA;AAExC,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAClH,YAAY,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AACvC,YAAY,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,YAAY,CAAA;AAChE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAA;AACjF,YAAY,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,2BAA2B,EAAC,MAAM,WAAW,CAAA;AAE3G,OAAO,EAAC,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,YAAY,CAAA;AACjF,YAAY,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAA;AAExC,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAClH,YAAY,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,oBAAoB,CAAA"}
|
package/dist/display/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* the engine's scene pipeline (`processScene`) uses these same modules, so a
|
|
8
8
|
* miniapp that wraps text with them gets the rows the glasses will draw.
|
|
9
9
|
*/
|
|
10
|
-
export { G1_PROFILE, G1_PROFILE_LEGACY, G1_HYPHEN_WIDTH_PX, G1_SPACE_WIDTH_PX, G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX, Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX, NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX, RAYNEO_IO_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX, } from "./profiles";
|
|
10
|
+
export { G1_PROFILE, G1_PROFILE_LEGACY, G1_HYPHEN_WIDTH_PX, G1_SPACE_WIDTH_PX, G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX, Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX, NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX, RAYNEO_IO_PROFILE, RAYNEO_IO_CFW_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX, } from "./profiles";
|
|
11
11
|
export { TextMeasurer } from "./measurer";
|
|
12
12
|
export { detectScript, isCJKCharacter, isKoreanCharacter, isUniformWidthScript, isUnsupportedScript, needsHyphenForBreak, SCRIPT_RANGES, } from "./measurer";
|
|
13
13
|
export { TextWrapper, DEFAULT_WRAP_OPTIONS, normalizeDisplayText } from "./wrapper";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AAEvC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAA;AAGjF,OAAO,EAAC,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,YAAY,CAAA;AAwBjF,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AAEvC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAA;AAGjF,OAAO,EAAC,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,YAAY,CAAA;AAwBjF,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAA"}
|
|
@@ -9,5 +9,5 @@ export { G1_PROFILE, G1_PROFILE_LEGACY, G1_HYPHEN_WIDTH_PX, G1_SPACE_WIDTH_PX }
|
|
|
9
9
|
export { Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX } from "./z100";
|
|
10
10
|
export { G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX } from "./g2";
|
|
11
11
|
export { NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX } from "./nex";
|
|
12
|
-
export { RAYNEO_IO_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX } from "./rayneo-io";
|
|
12
|
+
export { RAYNEO_IO_PROFILE, RAYNEO_IO_CFW_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX, } from "./rayneo-io";
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/display/profiles/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAGzF,OAAO,EAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,QAAQ,CAAA;AAG9E,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAGtE,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,OAAO,CAAA;AAG1E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/display/profiles/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAGzF,OAAO,EAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,QAAQ,CAAA;AAG9E,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAGtE,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,OAAO,CAAA;AAG1E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,aAAa,CAAA"}
|
|
@@ -12,6 +12,6 @@ export { Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX } from "./z100"
|
|
|
12
12
|
export { G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX } from "./g2";
|
|
13
13
|
// Mentra Nex Profile (a.k.a. Mentra Display)
|
|
14
14
|
export { NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX } from "./nex";
|
|
15
|
-
// RayNeo iO
|
|
16
|
-
export { RAYNEO_IO_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX } from "./rayneo-io";
|
|
15
|
+
// RayNeo iO Profiles (stock subtitle page, Glassly CFW scene page)
|
|
16
|
+
export { RAYNEO_IO_PROFILE, RAYNEO_IO_CFW_PROFILE, RAYNEO_IO_HYPHEN_WIDTH_PX, RAYNEO_IO_SPACE_WIDTH_PX, } from "./rayneo-io";
|
|
17
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/display/profiles/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,cAAc;AACd,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAEzF,eAAe;AACf,OAAO,EAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,QAAQ,CAAA;AAE9E,aAAa;AACb,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAEtE,6CAA6C;AAC7C,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,OAAO,CAAA;AAE1E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/display/profiles/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,cAAc;AACd,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAEzF,eAAe;AACf,OAAO,EAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,QAAQ,CAAA;AAE9E,aAAa;AACb,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAEtE,6CAA6C;AAC7C,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,OAAO,CAAA;AAE1E,mEAAmE;AACnE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,aAAa,CAAA"}
|
|
@@ -14,9 +14,19 @@ import { DisplayProfile } from "./types";
|
|
|
14
14
|
* - Max payload: 96 characters per subtitle update
|
|
15
15
|
*
|
|
16
16
|
* With the Glassly CFW the engine renders scene frames onto the 540×180
|
|
17
|
-
* page instead and wraps
|
|
17
|
+
* page instead and wraps them with `RAYNEO_IO_CFW_PROFILE`.
|
|
18
18
|
*/
|
|
19
19
|
export declare const RAYNEO_IO_PROFILE: DisplayProfile;
|
|
20
|
+
/**
|
|
21
|
+
* RayNeo iO with the Glassly CFW: scene text on the 540×180 page.
|
|
22
|
+
*
|
|
23
|
+
* The glasses draw text with their own SF Pro font, one line every 25 px, 2 px
|
|
24
|
+
* in from the box edge, and do not clip it, so the phone cuts any line that is
|
|
25
|
+
* still too wide. Text the font has no glyphs for (CJK, Cyrillic, ...) is
|
|
26
|
+
* rasterized on the phone with the 20 px system font; those widths are
|
|
27
|
+
* estimates.
|
|
28
|
+
*/
|
|
29
|
+
export declare const RAYNEO_IO_CFW_PROFILE: DisplayProfile;
|
|
20
30
|
/**
|
|
21
31
|
* Get the hyphen width for RayNeo iO in pixels.
|
|
22
32
|
* Used for line breaking calculations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rayneo-io.d.ts","sourceRoot":"","sources":["../../../src/display/profiles/rayneo-io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AA0HtC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAyC/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"rayneo-io.d.ts","sourceRoot":"","sources":["../../../src/display/profiles/rayneo-io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AA0HtC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAyC/B,CAAA;AAmCD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,cAgCnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAA"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* The stock firmware renders subtitle text itself (business 19, font_size 2)
|
|
5
5
|
* with a near-uniform sans face; these widths are estimates that keep the
|
|
6
6
|
* phone-side wrapper slightly conservative so a line never overflows on the
|
|
7
|
-
* glasses.
|
|
8
|
-
*
|
|
7
|
+
* glasses. Scene text on the Glassly CFW is wrapped with
|
|
8
|
+
* `RAYNEO_IO_CFW_PROFILE` instead.
|
|
9
9
|
*/
|
|
10
10
|
const RAYNEO_IO_GLYPH_WIDTHS = {
|
|
11
11
|
// Space and punctuation
|
|
@@ -126,7 +126,7 @@ const RAYNEO_IO_GLYPH_WIDTHS = {
|
|
|
126
126
|
* - Max payload: 96 characters per subtitle update
|
|
127
127
|
*
|
|
128
128
|
* With the Glassly CFW the engine renders scene frames onto the 540×180
|
|
129
|
-
* page instead and wraps
|
|
129
|
+
* page instead and wraps them with `RAYNEO_IO_CFW_PROFILE`.
|
|
130
130
|
*/
|
|
131
131
|
export const RAYNEO_IO_PROFILE = {
|
|
132
132
|
id: "rayneo-io",
|
|
@@ -164,6 +164,76 @@ export const RAYNEO_IO_PROFILE = {
|
|
|
164
164
|
noEndChars: ["(", "[", "{", "(", "【", "「"],
|
|
165
165
|
},
|
|
166
166
|
};
|
|
167
|
+
/**
|
|
168
|
+
* Advance in px of each glyph of the Glassly CFW's builtin font (SF Pro 20 px,
|
|
169
|
+
* revision 8+, kerning ignored): printable Latin-1 0x20..0xFF, then
|
|
170
|
+
* `RAYNEO_IO_CFW_EXTRA_GLYPHS`. 0 = no glyph. Same table as the Bluetooth SDK's
|
|
171
|
+
* `RayNeoIOCfwText`, which cuts every line wider than its box to these widths.
|
|
172
|
+
*/
|
|
173
|
+
const RAYNEO_IO_CFW_ADVANCES = [
|
|
174
|
+
4, 5, 8, 12, 12, 16, 13, 5, 6, 6, 8, 12, 4, 9, 4, 6, 12, 9, 11, 12, 12, 12, 12, 11, 12, 12, 4, 4, 12, 12, 12, 10, 17,
|
|
175
|
+
13, 12, 14, 14, 11, 11, 14, 14, 4, 10, 12, 10, 17, 14, 15, 12, 15, 12, 12, 12, 14, 13, 18, 13, 12, 12, 6, 6, 6, 12,
|
|
176
|
+
11, 10, 10, 11, 10, 11, 10, 6, 11, 11, 4, 4, 10, 4, 16, 11, 11, 11, 11, 6, 9, 6, 11, 10, 14, 9, 10, 9, 6, 4, 6, 12, 0,
|
|
177
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 12, 12, 12, 12,
|
|
178
|
+
4, 11, 10, 17, 7, 12, 12, 1, 12, 10, 8, 12, 6, 6, 10, 12, 11, 4, 10, 5, 7, 12, 14, 14, 15, 10, 13, 13, 13, 13, 13, 13,
|
|
179
|
+
19, 14, 11, 11, 11, 11, 4, 4, 4, 4, 14, 14, 15, 15, 15, 15, 15, 12, 15, 14, 14, 14, 14, 12, 12, 11, 10, 10, 10, 10,
|
|
180
|
+
10, 10, 17, 10, 10, 10, 10, 10, 4, 4, 4, 4, 11, 11, 11, 11, 11, 11, 11, 12, 11, 11, 11, 11, 11, 10, 11, 10, 4, 4, 4,
|
|
181
|
+
7, 7, 7, 11, 17, 12, 9, 12, 15, 18, 18, 16, 16, 17,
|
|
182
|
+
];
|
|
183
|
+
/** Code points the revision 9 font carries beyond Latin-1, in firmware table order. */
|
|
184
|
+
const RAYNEO_IO_CFW_EXTRA_GLYPHS = [
|
|
185
|
+
0x2018, 0x2019, 0x201a, 0x201c, 0x201d, 0x201e, 0x2013, 0x2014, 0x2026, 0x2022, 0x20ac, 0x2122, 0x2190, 0x2192,
|
|
186
|
+
0x2191, 0x2193, 0x2713,
|
|
187
|
+
];
|
|
188
|
+
function cfwGlyphWidths() {
|
|
189
|
+
const widths = new Map();
|
|
190
|
+
RAYNEO_IO_CFW_ADVANCES.forEach((advance, index) => {
|
|
191
|
+
if (advance === 0)
|
|
192
|
+
return;
|
|
193
|
+
const code = index < 224 ? 0x20 + index : RAYNEO_IO_CFW_EXTRA_GLYPHS[index - 224];
|
|
194
|
+
widths.set(String.fromCodePoint(code), advance);
|
|
195
|
+
});
|
|
196
|
+
return widths;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* RayNeo iO with the Glassly CFW: scene text on the 540×180 page.
|
|
200
|
+
*
|
|
201
|
+
* The glasses draw text with their own SF Pro font, one line every 25 px, 2 px
|
|
202
|
+
* in from the box edge, and do not clip it, so the phone cuts any line that is
|
|
203
|
+
* still too wide. Text the font has no glyphs for (CJK, Cyrillic, ...) is
|
|
204
|
+
* rasterized on the phone with the 20 px system font; those widths are
|
|
205
|
+
* estimates.
|
|
206
|
+
*/
|
|
207
|
+
export const RAYNEO_IO_CFW_PROFILE = {
|
|
208
|
+
...RAYNEO_IO_PROFILE,
|
|
209
|
+
id: "rayneo-io-cfw",
|
|
210
|
+
name: "RayNeo iO (Glassly CFW)",
|
|
211
|
+
displayWidthPx: 540,
|
|
212
|
+
displayHeightPx: 180,
|
|
213
|
+
maxLines: 7,
|
|
214
|
+
// The pitch the firmware reports in IDENT.
|
|
215
|
+
lineHeightPx: 25,
|
|
216
|
+
textInsetPx: 2,
|
|
217
|
+
// Each line goes out as its own inline record of at most 128 bytes; this
|
|
218
|
+
// only has to outlast seven full lines.
|
|
219
|
+
maxPayloadBytes: 1024,
|
|
220
|
+
fontMetrics: {
|
|
221
|
+
glyphWidths: cfwGlyphWidths(),
|
|
222
|
+
defaultGlyphWidth: 11,
|
|
223
|
+
renderFormula: (glyphWidth) => glyphWidth,
|
|
224
|
+
uniformScripts: {
|
|
225
|
+
cjk: 20,
|
|
226
|
+
hiragana: 20,
|
|
227
|
+
katakana: 20,
|
|
228
|
+
korean: 20,
|
|
229
|
+
cyrillic: 13,
|
|
230
|
+
},
|
|
231
|
+
fallback: {
|
|
232
|
+
latinMaxWidth: 19, // 'Æ'
|
|
233
|
+
unknownBehavior: "useLatinMax",
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
};
|
|
167
237
|
/**
|
|
168
238
|
* Get the hyphen width for RayNeo iO in pixels.
|
|
169
239
|
* Used for line breaking calculations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rayneo-io.js","sourceRoot":"","sources":["../../../src/display/profiles/rayneo-io.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rayneo-io.js","sourceRoot":"","sources":["../../../src/display/profiles/rayneo-io.ts"],"names":[],"mappings":"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AE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACrH,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpH,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACrH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACnH,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACnD,CAAA;AAED,uFAAuF;AACvF,MAAM,0BAA0B,GAAG;IACjC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9G,MAAM,EAAE,MAAM,EAAE,MAAM;CACvB,CAAA;AAED,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,sBAAsB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,IAAI,OAAO,KAAK,CAAC;YAAE,OAAM;QACzB,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;QACjF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,GAAG,iBAAiB;IACpB,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,yBAAyB;IAE/B,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;IACpB,QAAQ,EAAE,CAAC;IACX,2CAA2C;IAC3C,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,CAAC;IAEd,yEAAyE;IACzE,wCAAwC;IACxC,eAAe,EAAE,IAAI;IAErB,WAAW,EAAE;QACX,WAAW,EAAE,cAAc,EAAE;QAC7B,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,UAAU;QACjD,cAAc,EAAE;YACd,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;SACb;QACD,QAAQ,EAAE;YACR,aAAa,EAAE,EAAE,EAAE,MAAM;YACzB,eAAe,EAAE,aAAa;SAC/B;KACF;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAA"}
|
|
@@ -21,6 +21,11 @@ export interface DisplayProfile {
|
|
|
21
21
|
* proved wrong on hardware (see profileLineHeightPx in scene/process.ts).
|
|
22
22
|
*/
|
|
23
23
|
lineHeightPx?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Inset in px the device keeps on each side when it draws a text box; the
|
|
26
|
+
* scene pipeline wraps to the box width minus twice this. Absent = 0.
|
|
27
|
+
*/
|
|
28
|
+
textInsetPx?: number;
|
|
24
29
|
/** Maximum safe payload size in bytes (for BLE transmission) */
|
|
25
30
|
maxPayloadBytes: number;
|
|
26
31
|
/** BLE chunk size for transmission */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/display/profiles/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAA;IAEV,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IAEZ,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAA;IAEtB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAA;IAEhB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAA;IAEvB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAA;IAEpB,wCAAwC;IACxC,WAAW,EAAE,WAAW,CAAA;IAExB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IAE7C;;;OAGG;IACH,cAAc,EAAE,mBAAmB,CAAA;IAEnC;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB,oDAAoD;IACpD,eAAe,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAA;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IAEvB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,KAAK,GACL,UAAU,GACV,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,aAAa,GACb,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/display/profiles/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAA;IAEV,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IAEZ,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAA;IAEtB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAA;IAEhB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAA;IAEvB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAA;IAEpB,wCAAwC;IACxC,WAAW,EAAE,WAAW,CAAA;IAExB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IAE7C;;;OAGG;IACH,cAAc,EAAE,mBAAmB,CAAA;IAEnC;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB,oDAAoD;IACpD,eAAe,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAA;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IAEvB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,KAAK,GACL,UAAU,GACV,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,aAAa,GACb,aAAa,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glassly/miniapp",
|
|
3
|
-
"version": "0.3.7-dev.
|
|
3
|
+
"version": "0.3.7-dev.909",
|
|
4
4
|
"description": "SDK for building Glassly local miniapps (browser/WebView)",
|
|
5
5
|
"author": "Glassly Labs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@glassly/cloud-protocol": "0.3.7-dev.
|
|
76
|
+
"@glassly/cloud-protocol": "0.3.7-dev.909",
|
|
77
77
|
"eventemitter3": "^5.0.1"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
package/src/display/index.ts
CHANGED
|
@@ -27,5 +27,10 @@ export {G2_PROFILE, G2_HYPHEN_WIDTH_PX, G2_SPACE_WIDTH_PX} from "./g2"
|
|
|
27
27
|
// Mentra Nex Profile (a.k.a. Mentra Display)
|
|
28
28
|
export {NEX_PROFILE, NEX_HYPHEN_WIDTH_PX, NEX_SPACE_WIDTH_PX} from "./nex"
|
|
29
29
|
|
|
30
|
-
// RayNeo iO
|
|
31
|
-
export {
|
|
30
|
+
// RayNeo iO Profiles (stock subtitle page, Glassly CFW scene page)
|
|
31
|
+
export {
|
|
32
|
+
RAYNEO_IO_PROFILE,
|
|
33
|
+
RAYNEO_IO_CFW_PROFILE,
|
|
34
|
+
RAYNEO_IO_HYPHEN_WIDTH_PX,
|
|
35
|
+
RAYNEO_IO_SPACE_WIDTH_PX,
|
|
36
|
+
} from "./rayneo-io"
|
|
@@ -6,8 +6,8 @@ import {DisplayProfile} from "./types"
|
|
|
6
6
|
* The stock firmware renders subtitle text itself (business 19, font_size 2)
|
|
7
7
|
* with a near-uniform sans face; these widths are estimates that keep the
|
|
8
8
|
* phone-side wrapper slightly conservative so a line never overflows on the
|
|
9
|
-
* glasses.
|
|
10
|
-
*
|
|
9
|
+
* glasses. Scene text on the Glassly CFW is wrapped with
|
|
10
|
+
* `RAYNEO_IO_CFW_PROFILE` instead.
|
|
11
11
|
*/
|
|
12
12
|
const RAYNEO_IO_GLYPH_WIDTHS: Record<string, number> = {
|
|
13
13
|
// Space and punctuation
|
|
@@ -135,7 +135,7 @@ const RAYNEO_IO_GLYPH_WIDTHS: Record<string, number> = {
|
|
|
135
135
|
* - Max payload: 96 characters per subtitle update
|
|
136
136
|
*
|
|
137
137
|
* With the Glassly CFW the engine renders scene frames onto the 540×180
|
|
138
|
-
* page instead and wraps
|
|
138
|
+
* page instead and wraps them with `RAYNEO_IO_CFW_PROFILE`.
|
|
139
139
|
*/
|
|
140
140
|
export const RAYNEO_IO_PROFILE: DisplayProfile = {
|
|
141
141
|
id: "rayneo-io",
|
|
@@ -180,6 +180,82 @@ export const RAYNEO_IO_PROFILE: DisplayProfile = {
|
|
|
180
180
|
},
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Advance in px of each glyph of the Glassly CFW's builtin font (SF Pro 20 px,
|
|
185
|
+
* revision 8+, kerning ignored): printable Latin-1 0x20..0xFF, then
|
|
186
|
+
* `RAYNEO_IO_CFW_EXTRA_GLYPHS`. 0 = no glyph. Same table as the Bluetooth SDK's
|
|
187
|
+
* `RayNeoIOCfwText`, which cuts every line wider than its box to these widths.
|
|
188
|
+
*/
|
|
189
|
+
const RAYNEO_IO_CFW_ADVANCES = [
|
|
190
|
+
4, 5, 8, 12, 12, 16, 13, 5, 6, 6, 8, 12, 4, 9, 4, 6, 12, 9, 11, 12, 12, 12, 12, 11, 12, 12, 4, 4, 12, 12, 12, 10, 17,
|
|
191
|
+
13, 12, 14, 14, 11, 11, 14, 14, 4, 10, 12, 10, 17, 14, 15, 12, 15, 12, 12, 12, 14, 13, 18, 13, 12, 12, 6, 6, 6, 12,
|
|
192
|
+
11, 10, 10, 11, 10, 11, 10, 6, 11, 11, 4, 4, 10, 4, 16, 11, 11, 11, 11, 6, 9, 6, 11, 10, 14, 9, 10, 9, 6, 4, 6, 12, 0,
|
|
193
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 12, 12, 12, 12,
|
|
194
|
+
4, 11, 10, 17, 7, 12, 12, 1, 12, 10, 8, 12, 6, 6, 10, 12, 11, 4, 10, 5, 7, 12, 14, 14, 15, 10, 13, 13, 13, 13, 13, 13,
|
|
195
|
+
19, 14, 11, 11, 11, 11, 4, 4, 4, 4, 14, 14, 15, 15, 15, 15, 15, 12, 15, 14, 14, 14, 14, 12, 12, 11, 10, 10, 10, 10,
|
|
196
|
+
10, 10, 17, 10, 10, 10, 10, 10, 4, 4, 4, 4, 11, 11, 11, 11, 11, 11, 11, 12, 11, 11, 11, 11, 11, 10, 11, 10, 4, 4, 4,
|
|
197
|
+
7, 7, 7, 11, 17, 12, 9, 12, 15, 18, 18, 16, 16, 17,
|
|
198
|
+
]
|
|
199
|
+
|
|
200
|
+
/** Code points the revision 9 font carries beyond Latin-1, in firmware table order. */
|
|
201
|
+
const RAYNEO_IO_CFW_EXTRA_GLYPHS = [
|
|
202
|
+
0x2018, 0x2019, 0x201a, 0x201c, 0x201d, 0x201e, 0x2013, 0x2014, 0x2026, 0x2022, 0x20ac, 0x2122, 0x2190, 0x2192,
|
|
203
|
+
0x2191, 0x2193, 0x2713,
|
|
204
|
+
]
|
|
205
|
+
|
|
206
|
+
function cfwGlyphWidths(): Map<string, number> {
|
|
207
|
+
const widths = new Map<string, number>()
|
|
208
|
+
RAYNEO_IO_CFW_ADVANCES.forEach((advance, index) => {
|
|
209
|
+
if (advance === 0) return
|
|
210
|
+
const code = index < 224 ? 0x20 + index : RAYNEO_IO_CFW_EXTRA_GLYPHS[index - 224]
|
|
211
|
+
widths.set(String.fromCodePoint(code), advance)
|
|
212
|
+
})
|
|
213
|
+
return widths
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* RayNeo iO with the Glassly CFW: scene text on the 540×180 page.
|
|
218
|
+
*
|
|
219
|
+
* The glasses draw text with their own SF Pro font, one line every 25 px, 2 px
|
|
220
|
+
* in from the box edge, and do not clip it, so the phone cuts any line that is
|
|
221
|
+
* still too wide. Text the font has no glyphs for (CJK, Cyrillic, ...) is
|
|
222
|
+
* rasterized on the phone with the 20 px system font; those widths are
|
|
223
|
+
* estimates.
|
|
224
|
+
*/
|
|
225
|
+
export const RAYNEO_IO_CFW_PROFILE: DisplayProfile = {
|
|
226
|
+
...RAYNEO_IO_PROFILE,
|
|
227
|
+
id: "rayneo-io-cfw",
|
|
228
|
+
name: "RayNeo iO (Glassly CFW)",
|
|
229
|
+
|
|
230
|
+
displayWidthPx: 540,
|
|
231
|
+
displayHeightPx: 180,
|
|
232
|
+
maxLines: 7,
|
|
233
|
+
// The pitch the firmware reports in IDENT.
|
|
234
|
+
lineHeightPx: 25,
|
|
235
|
+
textInsetPx: 2,
|
|
236
|
+
|
|
237
|
+
// Each line goes out as its own inline record of at most 128 bytes; this
|
|
238
|
+
// only has to outlast seven full lines.
|
|
239
|
+
maxPayloadBytes: 1024,
|
|
240
|
+
|
|
241
|
+
fontMetrics: {
|
|
242
|
+
glyphWidths: cfwGlyphWidths(),
|
|
243
|
+
defaultGlyphWidth: 11,
|
|
244
|
+
renderFormula: (glyphWidth: number) => glyphWidth,
|
|
245
|
+
uniformScripts: {
|
|
246
|
+
cjk: 20,
|
|
247
|
+
hiragana: 20,
|
|
248
|
+
katakana: 20,
|
|
249
|
+
korean: 20,
|
|
250
|
+
cyrillic: 13,
|
|
251
|
+
},
|
|
252
|
+
fallback: {
|
|
253
|
+
latinMaxWidth: 19, // 'Æ'
|
|
254
|
+
unknownBehavior: "useLatinMax",
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
}
|
|
258
|
+
|
|
183
259
|
/**
|
|
184
260
|
* Get the hyphen width for RayNeo iO in pixels.
|
|
185
261
|
* Used for line breaking calculations.
|
|
@@ -27,6 +27,12 @@ export interface DisplayProfile {
|
|
|
27
27
|
*/
|
|
28
28
|
lineHeightPx?: number
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Inset in px the device keeps on each side when it draws a text box; the
|
|
32
|
+
* scene pipeline wraps to the box width minus twice this. Absent = 0.
|
|
33
|
+
*/
|
|
34
|
+
textInsetPx?: number
|
|
35
|
+
|
|
30
36
|
/** Maximum safe payload size in bytes (for BLE transmission) */
|
|
31
37
|
maxPayloadBytes: number
|
|
32
38
|
|