bookcover-core 0.12.0 → 0.13.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"font_sizes.d.ts","sourceRoot":"","sources":["../src/font_sizes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,SAAS;IACtB,cAAc,EAAC,MAAM,EAAE,CAAA;IACvB,UAAU,EAAC,MAAM,CAAA;IACjB,WAAW,EAAC,MAAM,CAAA;IAClB,YAAY,EAAC,MAAM,CAAA;CACtB;AA2BD,sEAAsE;AACtE,wBAAgB,oBAAoB,CAChC,MAAM,EAAC,WAAW,EAClB,IAAI,EAAC,mBAAmB,GAC1B,SAAS,CAqEV"}
1
+ {"version":3,"file":"font_sizes.d.ts","sourceRoot":"","sources":["../src/font_sizes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,SAAS;IACtB,cAAc,EAAC,MAAM,EAAE,CAAA;IACvB,UAAU,EAAC,MAAM,CAAA;IACjB,WAAW,EAAC,MAAM,CAAA;IAClB,YAAY,EAAC,MAAM,CAAA;CACtB;AAwBD,sEAAsE;AACtE,wBAAgB,oBAAoB,CAChC,MAAM,EAAC,WAAW,EAClB,IAAI,EAAC,mBAAmB,GAC1B,SAAS,CAsCV"}
@@ -2,8 +2,6 @@
2
2
  import { clamp } from './utils.js';
3
3
  // Average character width as a fraction of font size (proportional fonts)
4
4
  const CHAR_WIDTH_RATIO = 0.55;
5
- // Assumed side margin as fraction of panel width
6
- const MARGIN_RATIO = 0.12;
7
5
  // Minimum spine width in mm before text is suppressed
8
6
  const MIN_SPINE_MM = 5;
9
7
  /**
@@ -22,47 +20,13 @@ function fit_size(text, available_mm, max_lines, min_mm, max_mm) {
22
20
  }
23
21
  /** Calculate all font sizes from text content and panel dimensions */
24
22
  export function calculate_font_sizes(schema, dims) {
25
- const panel_mm = dims.cover_face_width.toNumber();
26
- const available_mm = panel_mm * (1 - 2 * MARGIN_RATIO);
27
- // Subtitle/author font sizes match the Typst ratios — used here only for line-splitting
28
- const height_mm = dims.cover_face_height.toNumber();
29
- const subtitle_mm = height_mm * 0.045;
30
- const subtitle_clean = (schema.subtitle ?? '')
23
+ // Subtitle lines come from the user's own break only — the UI field takes up to 2 lines.
24
+ // An unbroken line that is too wide is scaled down by shrink-to-width in the template.
25
+ const subtitle_lines = (schema.subtitle ?? '')
31
26
  .split('\n')
32
27
  .map((p) => p.trim().replace(/ +/g, ' '))
33
28
  .filter((p) => p.length > 0)
34
- .slice(0, 2)
35
- .join('\n');
36
- // Compute balanced subtitle lines: if no user \n, split at the point that minimises
37
- // the difference in line lengths; otherwise respect the user's explicit break
38
- let subtitle_lines = [];
39
- if (subtitle_clean) {
40
- const chars_per_line = available_mm / (subtitle_mm * CHAR_WIDTH_RATIO);
41
- if (subtitle_clean.includes('\n')) {
42
- subtitle_lines = subtitle_clean.split('\n');
43
- }
44
- else if (subtitle_clean.length <= chars_per_line || !subtitle_clean.includes(' ')) {
45
- // Fits on one line or is a single word — no split needed
46
- subtitle_lines = [subtitle_clean];
47
- }
48
- else {
49
- // Balance: try every word split, pick the one with most equal line lengths.
50
- // No chars_per_line guard — shrink-to-width in Typst handles any overflow.
51
- const words = subtitle_clean.split(' ');
52
- let best_i = Math.ceil(words.length / 2);
53
- let best_diff = Infinity;
54
- for (let i = 1; i < words.length; i++) {
55
- const l1 = words.slice(0, i).join(' ');
56
- const l2 = words.slice(i).join(' ');
57
- const diff = Math.abs(l1.length - l2.length);
58
- if (diff < best_diff) {
59
- best_diff = diff;
60
- best_i = i;
61
- }
62
- }
63
- subtitle_lines = [words.slice(0, best_i).join(' '), words.slice(best_i).join(' ')];
64
- }
65
- }
29
+ .slice(0, 2);
66
30
  // Back blurb: fixed size (content length varies too much)
67
31
  const back_blurb = 3.5;
68
32
  // Spine: join non-empty title texts for a single-line spine label
@@ -1 +1 @@
1
- {"version":3,"file":"font_sizes.js","sourceRoot":"","sources":["../src/font_sizes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"font_sizes.js","sourceRoot":"","sources":["../src/font_sizes.ts"],"names":[],"mappings":"AACA,gEAAgE;AAEhE,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAWhC,0EAA0E;AAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAE7B,sDAAsD;AACtD,MAAM,YAAY,GAAG,CAAC,CAAA;AAEtB;;;GAGG;AACH,SAAS,QAAQ,CAAC,IAAW,EAAE,YAAmB,EAAE,SAAgB,EAAE,MAAa,EAAE,MAAa;IAC9F,KAAK,IAAI,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,YAAY,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,CAAA;QAC5D,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAGD,sEAAsE;AACtE,MAAM,UAAU,oBAAoB,CAChC,MAAkB,EAClB,IAAwB;IAExB,yFAAyF;IACzF,uFAAuF;IACvF,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;SACzC,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAC/C,MAAM,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAClC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEhB,0DAA0D;IAC1D,MAAM,UAAU,GAAG,GAAG,CAAA;IAEtB,kEAAkE;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAA;IAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAA;IAEhE,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,YAAY,GAAG,CAAC,CAAA;IAEpB,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;QAC3B,mFAAmF;QACnF,0EAA0E;QAC1E,WAAW,GAAG,KAAK,CACf,QAAQ,CAAC,MAAM,CAAC,WAAY,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,EAC9E,GAAG,EAAE,QAAQ,GAAG,IAAI,CACvB,CAAA;QACD,qDAAqD;QACrD,IAAI,MAAM,CAAC,YAAa,IAAI,QAAQ,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;YACzD,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC,CAAA;QACpD,CAAC;IACL,CAAC;IAED,OAAO;QACH,cAAc;QACd,UAAU;QACV,WAAW;QACX,YAAY;KACf,CAAA;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bookcover-core",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "license": "MIT-0",
5
5
  "repository": {
6
6
  "type": "git",