palt-typesetting 0.6.2 → 0.7.2
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/README.md +175 -112
- package/bundle/typesetter.min.css +1 -1
- package/bundle/typesetter.min.js +1 -1
- package/dist/index.js +3 -6
- package/dist/insert-separators.d.ts.map +1 -1
- package/dist/insert-separators.js +2 -4
- package/dist/typesetter.css +7 -7
- package/dist/util-regex.d.ts +3 -1
- package/dist/util-regex.d.ts.map +1 -1
- package/dist/util-regex.js +8 -1
- package/dist/util-tags.d.ts.map +1 -1
- package/dist/util-tags.js +3 -4
- package/dist/util-text-classes.d.ts.map +1 -1
- package/dist/util-text-classes.js +3 -1
- package/package.json +3 -6
- package/types/index.d.ts +2 -2
package/README.md
CHANGED
|
@@ -19,6 +19,8 @@ Palt Typesetting は、美しいテキスト表示を実現するための JavaS
|
|
|
19
19
|
|
|
20
20
|
### Install from NPM
|
|
21
21
|
|
|
22
|
+
npm でパッケージをインストールする場合
|
|
23
|
+
|
|
22
24
|
```shell
|
|
23
25
|
npm install palt-typesetting
|
|
24
26
|
```
|
|
@@ -34,11 +36,20 @@ const typesetter = new Typesetter()
|
|
|
34
36
|
typesetter.renderToSelector('.my-class')
|
|
35
37
|
```
|
|
36
38
|
|
|
37
|
-
### Use
|
|
39
|
+
### Use from CDN
|
|
40
|
+
|
|
41
|
+
WordPress や jQuery などの環境で使用する場合
|
|
38
42
|
|
|
39
43
|
```html
|
|
40
|
-
<
|
|
41
|
-
|
|
44
|
+
<head>
|
|
45
|
+
<!-- head タグ内でスタイルの読み込み -->
|
|
46
|
+
<link rel="stylesheet" type="text/css" href="https://unpkg.com/palt-typesetting@0.7.2/bundle/typesetter.min.css" />
|
|
47
|
+
</head>
|
|
48
|
+
|
|
49
|
+
<body>
|
|
50
|
+
<!-- body 閉じタグの前でスクリプトの読み込み -->
|
|
51
|
+
<script src="https://unpkg.com/palt-typesetting@0.7.2/bundle/typesetter.min.js"></script>
|
|
52
|
+
</body>
|
|
42
53
|
```
|
|
43
54
|
|
|
44
55
|
```html
|
|
@@ -51,13 +62,15 @@ typesetter.renderToSelector('.my-class')
|
|
|
51
62
|
</script>
|
|
52
63
|
```
|
|
53
64
|
|
|
54
|
-
### Apply CSS
|
|
65
|
+
### Apply Custom CSS
|
|
66
|
+
|
|
67
|
+
生成された組版用 HTML にカスタム CSS を適用
|
|
55
68
|
|
|
56
69
|
```css
|
|
57
|
-
|
|
70
|
+
/**
|
|
58
71
|
* 共通のスタイリング(例)
|
|
59
72
|
*/
|
|
60
|
-
.
|
|
73
|
+
.typesetting-wrapper {
|
|
61
74
|
/* プロポーショナルメトリクス(ツメ組み)の設定 */
|
|
62
75
|
font-feature-settings: 'palt';
|
|
63
76
|
|
|
@@ -67,27 +80,27 @@ typesetter.renderToSelector('.my-class')
|
|
|
67
80
|
/* 文字間 */
|
|
68
81
|
letter-spacing: 0.1em;
|
|
69
82
|
|
|
70
|
-
|
|
83
|
+
/**
|
|
71
84
|
* Safari のフォントレンダリング対策。
|
|
72
|
-
* 英数(.
|
|
85
|
+
* 英数(.typesetting-latin)で -webkit-text-stroke を使う場合は必須。
|
|
73
86
|
* text-stroke-weight > 0, text-stroke-color: transparent
|
|
74
87
|
*/
|
|
75
88
|
-webkit-text-stroke: 0.01em transparent;
|
|
76
89
|
}
|
|
77
90
|
|
|
78
|
-
|
|
91
|
+
/**
|
|
79
92
|
* 英数のみのスタイリング(例)
|
|
80
93
|
*/
|
|
81
|
-
.
|
|
94
|
+
.typesetting-latin {
|
|
82
95
|
/* フォントの拡大・縮小 */
|
|
83
96
|
font-size: 105%;
|
|
84
97
|
|
|
85
98
|
/* ベースラインの調整 */
|
|
86
99
|
vertical-align: 0.02em;
|
|
87
100
|
|
|
88
|
-
|
|
89
|
-
* 行間の調整。親要素 .
|
|
90
|
-
* [.
|
|
101
|
+
/**
|
|
102
|
+
* 行間の調整。親要素 .typesetting-wrapper の行間と視覚的に合わせます。
|
|
103
|
+
* [.typesetting-wrapper の line-height] ÷ [フォントの拡大率] - [ベースラインの調整値の絶対値] × 2
|
|
91
104
|
*/
|
|
92
105
|
line-height: calc(1.8 / 1.05 - 0.02 * 2);
|
|
93
106
|
|
|
@@ -103,54 +116,24 @@ typesetter.renderToSelector('.my-class')
|
|
|
103
116
|
|
|
104
117
|
## Typesetter Class
|
|
105
118
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
```javascript
|
|
109
|
-
// Typesetter のインスタンスを作成
|
|
110
|
-
const typesetter = new Typesetter()
|
|
111
|
-
|
|
112
|
-
// セレクターにマッチする要素に対して組版を適用
|
|
113
|
-
typesetter.renderToSelector('div')
|
|
114
|
-
typesetter.renderToSelector('.my-class')
|
|
115
|
-
typesetter.renderToSelector('#my-id')
|
|
116
|
-
|
|
117
|
-
// HTML 要素に組版を適用
|
|
118
|
-
const elements = document.querySelectorAll('.my-class')
|
|
119
|
-
typesetter.renderToElements(elements)
|
|
120
|
-
|
|
121
|
-
// 組版を適用した HTML の取得
|
|
122
|
-
const srcHtml = '「日本語」とEnglish'
|
|
123
|
-
console.log(typesetter.render(srcHtml))
|
|
124
|
-
// <span class="typeset" /* 中略 */>「日本語」<span class="typeset-thin-space" style="font-size: 100%;" /* 中略 */> </span><wbr>と<span class="typeset-thin-space" style="font-size: 100%;" /* 中略 */> </span><wbr><span class="typeset-latin">English</span></span>
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Constructor
|
|
128
|
-
|
|
129
|
-
| コンストラクタ | 説明 | 引数 |
|
|
130
|
-
| ---------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------- |
|
|
131
|
-
| `Typesetter(options?)` | Typesetter インスタンスを作成します。<br>オプションを指定することでカスタムの組版設定を適用できます。 | `options`: オプション(任意)。 |
|
|
132
|
-
|
|
133
|
-
### Methods
|
|
134
|
-
|
|
135
|
-
| メソッド名 | 説明 | 引数 | 戻り値 |
|
|
136
|
-
| ---------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------- |
|
|
137
|
-
| `render(srcHtml)` | スタイルを適用した HTML 文字列を返します。 | `srcHtml`: 処理する HTML 文字列 | `string`: スタイルを適用した HTML 文字列 |
|
|
138
|
-
| `renderToElements(elements)` | 指定された Element または Element の配列にスタイルを適用します。 | `elements`: スタイルを適用する Element または Element の配列 | `void` |
|
|
139
|
-
| `renderToSelector(selector)` | 指定された CSS セレクタに一致するすべての要素にスタイルを適用します。 | `selector`: スタイルを適用する要素を選択する CSS セレクタ | `void` |
|
|
119
|
+
Palt Typesetting では、Typesetter クラスを使用して HTML 文字列に組版を適用します。
|
|
120
|
+
ライブラリの機能はオプションを通じてカスタマイズできます。
|
|
140
121
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
### Usage
|
|
122
|
+
### サンプルコード
|
|
144
123
|
|
|
145
124
|
```javascript
|
|
125
|
+
/**
|
|
126
|
+
* options: TypesettingOptions
|
|
127
|
+
* オプションの設定
|
|
128
|
+
*/
|
|
146
129
|
const options = {
|
|
147
130
|
// 単語や助詞など、単語区切りでの改行を行います。
|
|
148
131
|
useWordBreak: true,
|
|
149
132
|
|
|
150
|
-
// 英数を `.
|
|
133
|
+
// 英数を `.typesetting-latin` でラップします。
|
|
151
134
|
wrapLatin: true,
|
|
152
135
|
|
|
153
|
-
// 罫線などの分離禁則文字を `.
|
|
136
|
+
// 罫線などの分離禁則文字を `.typesetting-no-breaks` でラップし、文字間を 0 に設定します。
|
|
154
137
|
noSpaceBetweenNoBreaks: true,
|
|
155
138
|
|
|
156
139
|
// 四分アキスペースを自動で挿入します。
|
|
@@ -172,50 +155,83 @@ const options = {
|
|
|
172
155
|
],
|
|
173
156
|
}
|
|
174
157
|
|
|
175
|
-
|
|
158
|
+
/**
|
|
159
|
+
* Typesetter(options?: TypesettingOptions)
|
|
160
|
+
* インスタンスの作成
|
|
161
|
+
*/
|
|
162
|
+
const typesetter = new Typesetter(options)
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* renderToSelector(selector: string): void
|
|
166
|
+
* セレクターにマッチする要素に対して組版を適用
|
|
167
|
+
*/
|
|
168
|
+
typesetter.renderToSelector('div')
|
|
176
169
|
typesetter.renderToSelector('.my-class')
|
|
170
|
+
typesetter.renderToSelector('#my-id')
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* renderToElements(elements: string): void
|
|
174
|
+
* HTML 文字列に組版を適用
|
|
175
|
+
*/
|
|
176
|
+
const elements = document.querySelectorAll('.my-class')
|
|
177
|
+
typesetter.renderToElements(elements)
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* render(srcHtml: string): string
|
|
181
|
+
* 組版を適用した HTML 文字列の取得
|
|
182
|
+
*/
|
|
183
|
+
const srcHtml = '「日本語」とEnglish'
|
|
184
|
+
console.log('output: ' + typesetter.render(srcHtml))
|
|
185
|
+
// output: <span class="typeset typesetting-wrapper typesetting-word-break">「日本語」<span class="typesetting-thin-space" style="letter-spacing: 0.2em;" data-content=" "></span>と<span class="typesetting-thin-space" style="letter-spacing: 0.2em;" data-content=" "></span><span class="typesetting-latin">English </span></span>
|
|
177
186
|
```
|
|
178
187
|
|
|
179
|
-
###
|
|
188
|
+
### コンストラクタ
|
|
180
189
|
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
| `
|
|
184
|
-
| `wrapLatin` | 英数を `span.typeset-latin` でラップします。<br>`useWordBreak` が `true` の場合にのみ有効です。 | `boolean` | `true` |
|
|
185
|
-
| `noSpaceBetweenNoBreaks` | 罫線などの分離禁則文字を `span.typeset-no-breaks` でラップし、文字間を 0 に設定します。<br>`useWordBreak` が `true` の場合にのみ有効です。 | `boolean` | `true` |
|
|
186
|
-
| `insertThinSpaces` | 四分アキスペースを自動で挿入します。 | `boolean` | `true` |
|
|
187
|
-
| `thinSpaceWidth` | 四分アキスペースの幅を設定します。<br>`insertThinSpaces` が `true` の場合にのみ有効です。 | `string` | `'0.2em' ` |
|
|
188
|
-
| `kerningRules` | 特定の文字間のカーニングルールを設定します。 | `{between: [string, string], value: string \| number}[]` | `[]` |
|
|
190
|
+
| コンストラクタ | 説明 | 引数の型 |
|
|
191
|
+
| ---------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------ |
|
|
192
|
+
| `Typesetter(options?)` | Typesetter インスタンスを作成します。<br>オプションを指定することでカスタムの組版設定を適用できます。 | `options?: TypesettingOptions` |
|
|
189
193
|
|
|
190
|
-
|
|
194
|
+
### メソッド
|
|
191
195
|
|
|
192
|
-
|
|
196
|
+
| メソッド名 | 説明 | 引数の型 | 戻り値の型 |
|
|
197
|
+
| ---------------------------- | --------------------------------------------------------------------- | ---------------------- | ---------- |
|
|
198
|
+
| `render(srcHtml)` | スタイルを適用した HTML 文字列を返します。 | `string` | `string` |
|
|
199
|
+
| `renderToElements(elements)` | 指定された Element または Element の配列にスタイルを適用します。 | `Element \| Element[]` | `void` |
|
|
200
|
+
| `renderToSelector(selector)` | 指定された CSS セレクタに一致するすべての要素にスタイルを適用します。 | `string` | `void` |
|
|
193
201
|
|
|
194
|
-
###
|
|
202
|
+
### オプション
|
|
195
203
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
thinSpaceWidth: string
|
|
205
|
-
kerningRules: KerningRule[]
|
|
206
|
-
}
|
|
204
|
+
| オプション名 | 説明 | オプションの型 | デフォルト値 |
|
|
205
|
+
| ------------------------ | ------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------ |
|
|
206
|
+
| `useWordBreak` | 単語や助詞など、単語区切りでの改行を行います。 | `boolean` | `true` |
|
|
207
|
+
| `wrapLatin` | 英数を `span.typesetting-latin` でラップします。 | `boolean` | `true` |
|
|
208
|
+
| `noSpaceBetweenNoBreaks` | 罫線などの分離禁則文字を `span.typesetting-no-breaks` でラップし、文字間を 0 に設定します。 | `boolean` | `true` |
|
|
209
|
+
| `insertThinSpaces` | 四分アキスペースを自動で挿入します。 | `boolean` | `true` |
|
|
210
|
+
| `thinSpaceWidth` | 四分アキスペースの幅を設定します。 | `string` | `'0.2em' ` |
|
|
211
|
+
| `kerningRules` | 特定の文字間のカーニングルールを設定します。 | `{between: [string, string], value: string \| number}[]` | `[]` |
|
|
207
212
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
+
### 生成される CSS クラス
|
|
214
|
+
|
|
215
|
+
| CSS クラス名 | 説明 |
|
|
216
|
+
| ------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
217
|
+
| `.typesetting-wrapper` | HTML 文字列中のテキストコンテンツをラップします。<br>オプションの指定に関わらず、常に生成されます。 |
|
|
218
|
+
| `.typesetting-word-break` | HTML 文字列中のテキストコンテンツをラップします。<br>`useWordBreak: true` のときに生成されます。 |
|
|
219
|
+
| `.typesetting-latin` | テキストコンテンツ中の英数をラップします。<br>`wrapLatin: true` のときに生成されます。 |
|
|
220
|
+
| `.typesetting-no-breaks` | テキストコンテンツ中の分離禁則文字をラップします。<br>`noSpaceBetweenNoBreaks: true` のときに生成されます。 |
|
|
221
|
+
| `.typesetting-thin-space` | 挿入される四分アキスペースエレメントの CSS クラスです。<br>`insertThinSpaces: true` のときに生成されます。 |
|
|
222
|
+
| `.typesetting-kerning` | 挿入されるカーニングエレメントの CSS クラスです。<br>有効な `kerningRules` が存在するときに生成されます。 |
|
|
213
223
|
|
|
214
|
-
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## for Typescript
|
|
227
|
+
|
|
228
|
+
TypeScript の型定義を提供しています。完全な型定義は[こちら](https://github.com/yamatoiizuka/palt-typesetting/blob/main/types/index.d.ts)をご参照ください。
|
|
229
|
+
|
|
230
|
+
### サンプルコード
|
|
215
231
|
|
|
216
232
|
```typescript
|
|
217
233
|
import Typesetter from 'palt-typesetting'
|
|
218
|
-
import type { TypesettingOptions, KerningRule } from 'palt-typesetting'
|
|
234
|
+
import type { TypesettingOptions, KerningRule } from 'palt-typesetting/types'
|
|
219
235
|
import 'palt-typesetting/dist/typesetter.css'
|
|
220
236
|
|
|
221
237
|
const kerning: KerningRule[] = [
|
|
@@ -223,10 +239,6 @@ const kerning: KerningRule[] = [
|
|
|
223
239
|
between: ['し', 'ま'],
|
|
224
240
|
value: '60',
|
|
225
241
|
},
|
|
226
|
-
{
|
|
227
|
-
between: ['す', '。'],
|
|
228
|
-
value: '-80',
|
|
229
|
-
},
|
|
230
242
|
]
|
|
231
243
|
|
|
232
244
|
const options: TypesettingOptions = {
|
|
@@ -242,55 +254,106 @@ typesetter.renderToSelector('.my-class')
|
|
|
242
254
|
|
|
243
255
|
## for Frameworks
|
|
244
256
|
|
|
245
|
-
|
|
257
|
+
モダンな JavaScript フレームワーク用のサンプル集です。
|
|
246
258
|
|
|
247
|
-
|
|
259
|
+
### React
|
|
248
260
|
|
|
249
|
-
|
|
261
|
+
Typesetting コンポーネントの作成
|
|
250
262
|
|
|
251
|
-
|
|
252
|
-
---
|
|
253
|
-
import Typesetter from 'palt-typesetting';
|
|
254
|
-
import 'palt-typesetting/dist/typesetter.css';
|
|
263
|
+
`components/Typesetting.jsx`
|
|
255
264
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
265
|
+
```jsx
|
|
266
|
+
'use client'
|
|
267
|
+
|
|
268
|
+
import React, { useEffect, useState } from 'react'
|
|
269
|
+
import Typesetter from 'palt-typesetting'
|
|
270
|
+
import 'palt-typesetting/dist/typesetter.css'
|
|
259
271
|
|
|
260
|
-
|
|
272
|
+
import './Typesetting.css'
|
|
261
273
|
|
|
262
|
-
|
|
263
|
-
|
|
274
|
+
const Typesetting = ({ content }) => {
|
|
275
|
+
const [renderedHtml, setRenderedHtml] = useState('')
|
|
276
|
+
|
|
277
|
+
useEffect(() => {
|
|
278
|
+
const typesetter = new Typesetter()
|
|
279
|
+
setRenderedHtml(typesetter.render(content))
|
|
280
|
+
}, [content])
|
|
281
|
+
|
|
282
|
+
return <span dangerouslySetInnerHTML={{ __html: renderedHtml }} />
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export default Typesetting
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
`components/Typesetting.css`
|
|
264
289
|
|
|
265
|
-
|
|
290
|
+
```css
|
|
291
|
+
/* 共通のスタイル */
|
|
292
|
+
.typesetting-wrapper {
|
|
266
293
|
font-feature-settings: 'palt';
|
|
267
|
-
line-height: 1.8;
|
|
268
294
|
letter-spacing: 0.1em;
|
|
269
|
-
/* ...その他のスタイル */
|
|
270
295
|
}
|
|
271
296
|
|
|
272
|
-
|
|
297
|
+
/* 英数のスタイル */
|
|
298
|
+
.typesetting-latin {
|
|
273
299
|
font-size: 105%;
|
|
274
300
|
letter-spacing: 0.05em;
|
|
275
|
-
/* ...その他のスタイル */
|
|
276
301
|
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Astro.js
|
|
305
|
+
|
|
306
|
+
Typesetting コンポーネントの作成
|
|
307
|
+
|
|
308
|
+
`components/Typesetting.astro`
|
|
309
|
+
|
|
310
|
+
```astro
|
|
311
|
+
---
|
|
312
|
+
import Typesetter from 'palt-typesetting'
|
|
313
|
+
import 'palt-typesetting/dist/typesetter.css'
|
|
314
|
+
|
|
315
|
+
const { content } = Astro.props
|
|
316
|
+
const slot = await Astro.slots.render('default')
|
|
317
|
+
const srcHtml = content || slot || ''
|
|
318
|
+
|
|
319
|
+
const typesetter = new Typesetter();
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
<Fragment set:html={typesetter.render(srcHtml)} />
|
|
323
|
+
|
|
324
|
+
<style is:global>
|
|
325
|
+
/* 共通のスタイル */
|
|
326
|
+
.typesetting-wrapper {
|
|
327
|
+
font-feature-settings: 'palt';
|
|
328
|
+
letter-spacing: 0.1em;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* 英数のスタイル */
|
|
332
|
+
.typesetting-latin {
|
|
333
|
+
font-size: 105%;
|
|
334
|
+
letter-spacing: 0.05em;
|
|
335
|
+
}
|
|
277
336
|
</style>
|
|
278
337
|
```
|
|
279
338
|
|
|
280
|
-
|
|
339
|
+
Typesetting コンポーネントの読み込み
|
|
281
340
|
|
|
282
341
|
`pages/index.astro`
|
|
283
342
|
|
|
284
343
|
```astro
|
|
285
344
|
---
|
|
286
|
-
import
|
|
345
|
+
import Typeset from '../components/Typesetting.astro'
|
|
287
346
|
---
|
|
288
347
|
|
|
289
|
-
<
|
|
348
|
+
<div>
|
|
349
|
+
<!-- props を使った書き方 -->
|
|
350
|
+
<Typesetting content="「日本語」とEnglish、晴れ・28度。" />
|
|
351
|
+
|
|
352
|
+
<!-- slot を使った書き方 -->
|
|
290
353
|
<Typesetting>
|
|
291
|
-
|
|
354
|
+
<a href="/work">作品ページ</a>
|
|
292
355
|
</Typesetting>
|
|
293
|
-
</
|
|
356
|
+
</div>
|
|
294
357
|
|
|
295
358
|
<style>
|
|
296
359
|
p {
|
|
@@ -305,7 +368,7 @@ import Typesetting from '../components/Typesetting.astro'
|
|
|
305
368
|
|
|
306
369
|
### 環境要件
|
|
307
370
|
|
|
308
|
-
Palt Typesetting ライブラリは、テキストを言語固有のセグメントに分割する `Intl.Segmenter`
|
|
371
|
+
Palt Typesetting ライブラリは、テキストを言語固有のセグメントに分割する `Intl.Segmenter` という機能に一部依存しています。そのため、以下の環境要件があります。
|
|
309
372
|
|
|
310
373
|
**SSG など、サーバーサイドで実行する場合**
|
|
311
374
|
|
|
@@ -315,7 +378,7 @@ Palt Typesetting ライブラリは、テキストを言語固有のセグメン
|
|
|
315
378
|
|
|
316
379
|
- Intl.Segmenter をサポートしているブラウザ
|
|
317
380
|
|
|
318
|
-
クライアントサイドで実行する場合、この機能は一部のブラウザで利用できません。Palt Typesetting ライブラリは、Firefox などの `Intl.Segmenter` がサポートされていない環境[^1] では、`useWordBreak`(単語区切りでの改行)と `insertThinSpaces`(四分アキの自動挿入)オプションがスキップされます。全てのモダンブラウザで同様の見え方を再現するには、サーバーサイドでの事前処理(SSG など)が必要となります。
|
|
381
|
+
クライアントサイドで実行する場合、この機能は一部のブラウザで利用できません。Palt Typesetting ライブラリは、Firefox などの `Intl.Segmenter` がサポートされていない環境[^1] では、`useWordBreak`(単語区切りでの改行)と `insertThinSpaces`(四分アキの自動挿入)オプションがスキップされます。全てのモダンブラウザで同様の見え方を再現するには、サーバーサイドでの事前処理(Astro.js での SSG など)が必要となります。
|
|
319
382
|
|
|
320
383
|
`Intl.Segmenter` の対応状況については、[Can I use...](https://caniuse.com/?search=Intl.Segmenter) で確認できます。
|
|
321
384
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@font-face{font-family:ling-one;src:url('data:font/woff2;base64,AAEAAAAKAIAAAwAgT1MvMhG03xcAAAEoAAAAYGNtYXAADABzAAABkAAAADRnbHlmJAM2GwAAAcwAAAAYaGVhZCLbfFwAAACsAAAANmhoZWEnEvkrAAAA5AAAACRobXR4AAEAAAAAAYgAAAAIbG9jYQAMABgAAAHEAAAACG1heHAAcQAiAAABCAAAACBuYW1lBbsdPAAAAeQAAACKcG9zdHQrY6cAAAJwAAAALQABAAAAAQAAsWqD8F8PPPUAAycQAAAAAOHcugAAAAAA4edeTwAAAAAAAQABAAAABwACAAAAAAAAAAEAACcQ+DAAAAB9AAAAfAABAAEAAAAAAAAAAAAAAAAAAAABAAEAAAADAAMAAQAAAAAAAQACAB4ABgAAAGQAAAAAAAAAAwB9AZAABQAIGWQXcAAAAu4ZZBdwAAANrAAyC7gAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc3N6bQBAACAAIB9A+DAH0CcQB9AAAAABAAAAABOIG1gAAAAgAAAAAQAAAAAAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQAIAAAAAQABAABAAAAIP//AAAAIP///+EAAQAAAAAAAAAMAAwADAABAAAAAAABAAEAAgAANRcjAQEBAQAAAAAAAAYATgADAAEECQABAAgAAAADAAEECQACAAIACAADAAEECQADAB4ACgADAAEECQAEAAwAKAADAAEECQAFAAgANAADAAEECQAGAAwAKABMAGkAbgBnADEAMQAuADAAOwBzAHMAegBtADsATABpAG4AZwAtADEATABpAG4AZwAtADEAdgAxAC4AMAAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMBAgRuYnNwAAAA') format('woff2')}.
|
|
1
|
+
@font-face{font-family:ling-one;src:url('data:font/woff2;base64,AAEAAAAKAIAAAwAgT1MvMhG03xcAAAEoAAAAYGNtYXAADABzAAABkAAAADRnbHlmJAM2GwAAAcwAAAAYaGVhZCLbfFwAAACsAAAANmhoZWEnEvkrAAAA5AAAACRobXR4AAEAAAAAAYgAAAAIbG9jYQAMABgAAAHEAAAACG1heHAAcQAiAAABCAAAACBuYW1lBbsdPAAAAeQAAACKcG9zdHQrY6cAAAJwAAAALQABAAAAAQAAsWqD8F8PPPUAAycQAAAAAOHcugAAAAAA4edeTwAAAAAAAQABAAAABwACAAAAAAAAAAEAACcQ+DAAAAB9AAAAfAABAAEAAAAAAAAAAAAAAAAAAAABAAEAAAADAAMAAQAAAAAAAQACAB4ABgAAAGQAAAAAAAAAAwB9AZAABQAIGWQXcAAAAu4ZZBdwAAANrAAyC7gAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc3N6bQBAACAAIB9A+DAH0CcQB9AAAAABAAAAABOIG1gAAAAgAAAAAQAAAAAAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQAIAAAAAQABAABAAAAIP//AAAAIP///+EAAQAAAAAAAAAMAAwADAABAAAAAAABAAEAAgAANRcjAQEBAQAAAAAAAAYATgADAAEECQABAAgAAAADAAEECQACAAIACAADAAEECQADAB4ACgADAAEECQAEAAwAKAADAAEECQAFAAgANAADAAEECQAGAAwAKABMAGkAbgBnADEAMQAuADAAOwBzAHMAegBtADsATABpAG4AZwAtADEATABpAG4AZwAtADEAdgAxAC4AMAAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMBAgRuYnNwAAAA') format('woff2')}.typesetting-wrapper wbr{visibility:hidden}.typesetting-word-break{word-break:keep-all;overflow-wrap:anywhere}.typesetting-kerning,.typesetting-thin-space{letter-spacing:0;user-select:none}.typesetting-kerning[data-content]::after,.typesetting-thin-space[data-content]::after{content:attr(data-content);font-family:ling-one;line-height:0}.typesetting-no-breaks{letter-spacing:0}
|
package/bundle/typesetter.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typesetter=e():t.Typesetter=e()}(this,(()=>(()=>{var t={954:(t,e)=>{!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,r="+".charCodeAt(0),n="/".charCodeAt(0),u="0".charCodeAt(0),o="a".charCodeAt(0),a="A".charCodeAt(0),i="-".charCodeAt(0),s="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===r||e===i?62:e===n||e===s?63:e<u?-1:e<u+10?e-u+26+26:e<a+26?e-a:e<o+26?e-o+26:void 0}t.toByteArray=function(t){var r,n,u,o,a,i;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var s=t.length;a="="===t.charAt(s-2)?2:"="===t.charAt(s-1)?1:0,i=new e(3*t.length/4-a),u=a>0?t.length-4:t.length;var f=0;function l(t){i[f++]=t}for(r=0,n=0;r<u;r+=4,n+=3)l((16711680&(o=c(t.charAt(r))<<18|c(t.charAt(r+1))<<12|c(t.charAt(r+2))<<6|c(t.charAt(r+3))))>>16),l((65280&o)>>8),l(255&o);return 2===a?l(255&(o=c(t.charAt(r))<<2|c(t.charAt(r+1))>>4)):1===a&&(l((o=c(t.charAt(r))<<10|c(t.charAt(r+1))<<4|c(t.charAt(r+2))>>2)>>8&255),l(255&o)),i},t.fromByteArray=function(t){var e,r,n,u,o=t.length%3,a="";function i(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}for(e=0,n=t.length-o;e<n;e+=3)a+=i((u=r=(t[e]<<16)+(t[e+1]<<8)+t[e+2])>>18&63)+i(u>>12&63)+i(u>>6&63)+i(63&u);switch(o){case 1:a+=i((r=t[t.length-1])>>2),a+=i(r<<4&63),a+="==";break;case 2:a+=i((r=(t[t.length-2]<<8)+t[t.length-1])>>10),a+=i(r>>4&63),a+=i(r<<2&63),a+="="}return a}}(e)},741:t=>{function e(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,r){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=r,this.destLen=0,this.ltree=new e,this.dtree=new e}var n=new e,u=new e,o=new Uint8Array(30),a=new Uint16Array(30),i=new Uint8Array(30),s=new Uint16Array(30),c=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=new e,l=new Uint8Array(320);function h(t,e,r,n){var u,o;for(u=0;u<r;++u)t[u]=0;for(u=0;u<30-r;++u)t[u+r]=u/r|0;for(o=n,u=0;u<30;++u)e[u]=o,o+=1<<t[u]}var d=new Uint16Array(16);function b(t,e,r,n){var u,o;for(u=0;u<16;++u)t.table[u]=0;for(u=0;u<n;++u)t.table[e[r+u]]++;for(t.table[0]=0,o=0,u=0;u<16;++u)d[u]=o,o+=t.table[u];for(u=0;u<n;++u)e[r+u]&&(t.trans[d[e[r+u]]++]=u)}function p(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function v(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function y(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=0,n=0,u=0,o=t.tag;do{n=2*n+(1&o),o>>>=1,++u,r+=e.table[u],n-=e.table[u]}while(n>=0);return t.tag=o,t.bitcount-=u,e.trans[r+n]}function D(t,e,r){var n,u,o,a,i,s;for(n=v(t,5,257),u=v(t,5,1),o=v(t,4,4),a=0;a<19;++a)l[a]=0;for(a=0;a<o;++a){var h=v(t,3,0);l[c[a]]=h}for(b(f,l,0,19),i=0;i<n+u;){var d=y(t,f);switch(d){case 16:var p=l[i-1];for(s=v(t,2,3);s;--s)l[i++]=p;break;case 17:for(s=v(t,3,3);s;--s)l[i++]=0;break;case 18:for(s=v(t,7,11);s;--s)l[i++]=0;break;default:l[i++]=d}}b(e,l,0,n),b(r,l,n,u)}function F(t,e,r){for(;;){var n,u,c,f,l=y(t,e);if(256===l)return 0;if(l<256)t.dest[t.destLen++]=l;else for(n=v(t,o[l-=257],a[l]),u=y(t,r),f=c=t.destLen-v(t,i[u],s[u]);f<c+n;++f)t.dest[t.destLen++]=t.dest[f]}}function g(t){for(var e,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return-3;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,0}!function(t,e){var r;for(r=0;r<7;++r)t.table[r]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,r=0;r<24;++r)t.trans[r]=256+r;for(r=0;r<144;++r)t.trans[24+r]=r;for(r=0;r<8;++r)t.trans[168+r]=280+r;for(r=0;r<112;++r)t.trans[176+r]=144+r;for(r=0;r<5;++r)e.table[r]=0;for(e.table[5]=32,r=0;r<32;++r)e.trans[r]=r}(n,u),h(o,a,4,3),h(i,s,2,1),o[28]=0,a[28]=258,t.exports=function(t,e){var o,a,i=new r(t,e);do{switch(o=p(i),v(i,2,0)){case 0:a=g(i);break;case 1:a=F(i,n,u);break;case 2:D(i,i.ltree,i.dtree),a=F(i,i.ltree,i.dtree);break;default:a=-3}if(0!==a)throw new Error("Data error")}while(!o);return i.destLen<i.dest.length?"function"==typeof i.dest.slice?i.dest.slice(0,i.destLen):i.dest.subarray(0,i.destLen):i.dest}},667:(t,e,r)=>{const n=r(741),{swap32LE:u}=r(288);t.exports=class{constructor(t){const e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice;if(e||t instanceof Uint8Array){let r;if(e)this.highStart=t.readUInt32LE(0),this.errorValue=t.readUInt32LE(4),r=t.readUInt32LE(8),t=t.slice(12);else{const e=new DataView(t.buffer);this.highStart=e.getUint32(0,!0),this.errorValue=e.getUint32(4,!0),r=e.getUint32(8,!0),t=t.subarray(12)}t=n(t,new Uint8Array(r)),t=n(t,new Uint8Array(r)),u(t),this.data=new Uint32Array(t.buffer)}else({data:this.data,highStart:this.highStart,errorValue:this.errorValue}=t)}get(t){let e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=this.data[e+(t>>5&63)],e=(e<<2)+(31&t),this.data[e]):this.data[this.data.length-4]}}},288:t=>{const e=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],r=(t,e,r)=>{let n=t[e];t[e]=t[r],t[r]=n};t.exports={swap32LE:t=>{e&&(t=>{const e=t.length;for(let n=0;n<e;n+=4)r(t,n,n+3),r(t,n+1,n+2)})(t)}}}},e={};function r(n){var u=e[n];if(void 0!==u)return u.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};return(()=>{"use strict";r.d(n,{default:()=>Q});var t=window;function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function u(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var u=n.call(t,"string");if("object"!=e(u))return u;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(r)?r:String(r)}var a,i=function(){function e(r,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.replaceNode=function(e,r){var n=t.document.createRange();n.selectNode(e);var u=n.createContextualFragment(r);e.parentNode&&(e.parentNode.insertBefore(u,e),e.parentNode.removeChild(e))},this.transformFunctions=r,this.options=n}var r,n;return r=e,(n=[{key:"processHtmlWithFunctions",value:function(t){var e=this;return""===t?t:this.transformFunctions.reduce((function(t,r){return e.processHtml(t,r)}),t)}},{key:"processHtml",value:function(t,e){var r=this;if(""===t)return t;var n=s(t),u=c(n.body);return u.forEach((function(t,n){var o=u[n+1]||null,a=r.getTransformedHtml(t,o,e);r.replaceNode(t,a)})),n.body.innerHTML}},{key:"getTransformedHtml",value:function(t,e,r){return r(t.nodeValue||"",e&&e.nodeValue||"",this.options)}}])&&u(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),e}(),s=function(e){return(new t.DOMParser).parseFromString(e,"text/html")},c=function(e){for(var r=t.document.createTreeWalker(e,t.NodeFilter.SHOW_TEXT),n=r.nextNode(),u=[];n;)n.nodeValue&&""!==n.nodeValue.trim()&&u.push(n),n=r.nextNode();return u},f=i,l=r(667),h=r(954);const d=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,1,1,1,0,0,4,2,4,1,1,1,1,1,0,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,4,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,1,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0]],b=new l(h.toByteArray("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")),p=function(t){switch(t){case 33:case 39:case 40:case 42:return 12;case 35:return 5;default:return t}},v=function(t){switch(t){case 37:case 38:return 34;case 41:return 22;default:return t}};class y{constructor(t,e=!1){this.position=t,this.required=e}}a=class{nextCodePoint(){const t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos);return 55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t}nextCharClass(){return p(b.get(this.nextCodePoint()))}getSimpleBreak(){switch(this.nextClass){case 41:return!1;case 34:case 37:case 38:return this.curClass=34,!1;case 36:return this.curClass=36,!1}return null}getPairTableBreak(t){let e=!1;switch(d[this.curClass][this.nextClass]){case 0:e=!0;break;case 1:e=41===t;break;case 2:if(e=41===t,!e)return e=!1,e;break;case 3:if(41!==t)return e}return this.LB8a&&(e=!1),!this.LB21a||16!==this.curClass&&17!==this.curClass?this.LB21a=13===this.curClass:(e=!1,this.LB21a=!1),28===this.curClass?(this.LB30a++,2==this.LB30a&&28===this.nextClass&&(e=!0,this.LB30a=0)):this.LB30a=0,this.curClass=this.nextClass,e}nextBreak(){if(null==this.curClass){let t=this.nextCharClass();this.curClass=v(t),this.nextClass=t,this.LB8a=31===t,this.LB30a=0}for(;this.pos<this.string.length;){this.lastPos=this.pos;const t=this.nextClass;if(this.nextClass=this.nextCharClass(),34===this.curClass||36===this.curClass&&37!==this.nextClass)return this.curClass=v(p(this.nextClass)),new y(this.lastPos,!0);let e=this.getSimpleBreak();if(null===e&&(e=this.getPairTableBreak(t)),this.LB8a=31===this.nextClass,e)return new y(this.lastPos)}return this.lastPos<this.string.length?(this.lastPos=this.string.length,new y(this.string.length)):null}constructor(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null,this.LB8a=!1,this.LB21a=!1,this.LB30a=0}};var D=/(?:[\t-\r -~\xA0-\xA5\xAA\xAC\xB1-\xB3\xB9\xBA\xBF-\u02B8\u02E0-\u02E4\u0363-\u036F\u0485\u0486\u0951\u0952\u10FB\u1680\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2000-\u200A\u2018\u2019\u201C\u201D\u2028\u2029\u202F\u2030\u205F\u2070\u2071\u2074-\u208E\u2090-\u209C\u20AC\u20F0\u212A\u212B\u2132\u214E\u2160-\u2188\u2202\u2205\u220F\u2211\u2212\u221A\u221E\u222B\u2248\u2260\u2264\u2265\u2C60-\u2C7F\u3000\uA700-\uA707\uA722-\uA787\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA7FF\uA92E\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uFB00-\uFB06\uFEFF\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A])+/g,F=/(?:[\|\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3001-\u3003\u3005-\u3011\u3013-\u301F\u3021-\u302D\u3030-\u3035\u3037-\u303F\u3041-\u3096\u3099-\u30FF\u3190-\u319F\u31C0-\u31E3\u31F0-\u31FF\u3220-\u3247\u3280-\u32B0\u32C0-\u32CB\u32D0-\u3370\u337B-\u337F\u33E0-\u33FE\u3400-\u4DBF\u4E00-\u9FFF\uA700-\uA707\uF900-\uFA6D\uFA70-\uFAD9\uFE45\uFE46\uFF61-\uFF9F]|\uD81B[\uDFE2\uDFE3\uDFF0\uDFF1]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67]|\uD834[\uDF60-\uDF71]|\uD83C[\uDE00\uDE50\uDE51]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])+/,g=/(|[|{|〔|〈|《|「|『|【|〘|〖|“|‘/,A=/)|]|}|〕|〉|》|」|』|】|〙|〗|”|’/,w=/・|:|;/,m=/、|,/,P=/。|./,B=new RegExp("[".concat("—‥…_",String.fromCharCode(9472),"-").concat(String.fromCharCode(9599),"]+"),"g"),C=/[\s\u00A0]/,x={isLatin:function(t){return D.test(t)},isJapanese:function(t){return F.test(t)},hasLanguageTransition:function(t,e){return x.isJapanese(t)!==x.isJapanese(e)},shouldAddThinSpace:function(t,e){return x.hasLanguageTransition(t,e)&&(r=e,!new RegExp("^[".concat(P.source).concat(m.source,"]")).test(r));var r}},O="typeset",S=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",u=r?' style="'.concat(r,'"'):"";return'<span class="'.concat(e,'"').concat(u).concat(n,">").concat(t,"</span>")},L=function(t,e,r,n){var u="letter-spacing: ".concat(r,";"),o=' data-content="'.concat(n?" ":" ",'"');return S(t,e,u,o)},j=function(t){var e=new Intl.Segmenter("ja-JP",{granularity:"word"});return Array.from(e.segment(t),(function(t){return t.segment}))},E=function(t,e){return!C.test(t)&&!C.test(e)&&(x.shouldAddThinSpace(t,e)||function(t,e){for(var r=new RegExp("(".concat(A.source,"|").concat(m.source,"|").concat(P.source,")")),n={spaceBefore:{regex:g,hasSpaceBefore:!0,hasSpaceAfter:!1},spaceAfter:{regex:r,hasSpaceBefore:!1,hasSpaceAfter:!0},spaceBoth:{regex:w,hasSpaceBefore:!0,hasSpaceAfter:!0}},u=0,o=Object.values(n);u<o.length;u++){var a=o[u],i=a.regex,s=a.hasSpaceBefore,c=a.hasSpaceAfter;if(s&&i.test(e)&&!i.test(t))return!0;if(c&&i.test(t)&&!i.test(e))return!0}return!1}(t,e))},X=function(t,e){var r=t.slice(-1)+e.slice(0,1),n=new a(r).nextBreak();return!!n&&1===n.position},H=function(t,e,r){var n=j(t),u=j(e);return n.reduce((function(t,e,n,o){return t+function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0;if(!e)return t;var n,u=r.insertThinSpaces&&E(t,e),o=X(t,e);return u?t+function(t,e){var r="".concat(O,"-thin-space");return L("",r,t,e)}(null!==(n=r.thinSpaceWidth)&&void 0!==n?n:"",o):r.useWordBreak&&o?t+"<wbr>":t}(e,o[n+1]||u[0],r)}),"")};function k(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var W=function(t,e,r){return" "===t?t:(n=t,u=r.useWordBreak,o="".concat(O," ").concat(O,"-wrapper"),a="".concat(O,"-word-break"),i=u?"".concat(o," ").concat(a):o,S(n,i));var n,u,o,a,i},z=function(t,e,r){return" "===t?t:r.wrapLatin&&x.isLatin(t)?t.replace(D,(function(t){return e=t,r="".concat(O,"-latin"),S(e,r);var e,r})):r.noSpaceBetweenNoBreaks&&(n=t,B.test(n))?t.replace(B,(function(t){return e=t,r="".concat(O,"-no-breaks"),S(e,r);var e,r})):t;var n},T=function(t,e,r){var n,u=function(t){if(Array.isArray(t))return k(t)}(n=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return k(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?k(t,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return u.map((function(t,n){var o,a=u[n+1]||e[0]||"",i=null===(o=r.kerningRules)||void 0===o?void 0:o.find((function(e){return e.between[0]===t&&e.between[1]===a}));if(i){var s="number"==typeof i.value?i.value:parseInt(i.value,10),c=!r.useWordBreak&&X(t,a);return t+function(t,e){if(0===t)return"";var r="".concat(O,"-kerning");if(t<0){var n="margin: ".concat(t/1e3/2+"em",";");return S("",r,n)}return L("",r,t/1e3+"em",e)}(s,c)}return t})).join("")};function U(t){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(t)}function V(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function N(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?V(Object(r),!0).forEach((function(e){var n,u,o;n=t,u=e,o=r[e],(u=Z(u))in n?Object.defineProperty(n,u,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[u]=o})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):V(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function I(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Z(n.key),n)}}function Z(t){var e=function(t,e){if("object"!=U(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==U(e)?e:String(e)}function q(t,e,r){return e=K(e),function(t,e){if(e&&("object"===U(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,R()?Reflect.construct(e,r||[],K(t).constructor):e.apply(t,r))}function R(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(R=function(){return!!t})()}function K(t){return K=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},K(t)}function J(t,e){return J=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},J(t,e)}var Q=function(e){function r(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);var e=void 0!==Intl.Segmenter;e||console.warn("Intl.Segmenter is not supported in this environment. \nTherefore, the options `useWordBreak` and `insertThinSpaces` will be ignored. \nFor more information about Intl.Segmenter, please visit:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter");var n=e?[W,H,z,T]:[z,T],u=r.validateOptions(t);return q(this,r,[n,u])}var n,u,o;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&J(t,e)}(r,e),n=r,o=[{key:"getDefaultOptions",value:function(){return{useWordBreak:!0,wrapLatin:!0,noSpaceBetweenNoBreaks:!0,insertThinSpaces:!0,thinSpaceWidth:"0.2em",kerningRules:[]}}},{key:"validateOptions",value:function(t){return t.kerningRules&&(t.kerningRules=t.kerningRules.filter(r.isValidKerningRule)),N(N({},r.getDefaultOptions()),t)}},{key:"isValidKerningRule",value:function(t){return 1===t.between[0].length&&1===t.between[1].length||(console.warn("Kerning rule between '".concat(t.between[0],"' and '").concat(t.between[1],"' must be single characters.")),!1)}}],(u=[{key:"render",value:function(t){return t?this.processHtmlWithFunctions(t):""}},{key:"renderToElements",value:function(t){var e=this;t&&(Array.isArray(t)||(t=[t]),t.forEach((function(t){var r=e.render(t.innerHTML);t.innerHTML=r})))}},{key:"renderToSelector",value:function(e){if(e){var r=t.document.querySelectorAll(e);this.renderToElements(Array.from(r))}}}])&&I(n.prototype,u),o&&I(n,o),Object.defineProperty(n,"prototype",{writable:!1}),r}(f)})(),n.default})()));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typesetter=e():t.Typesetter=e()}(this,(()=>(()=>{var t={954:(t,e)=>{!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,r="+".charCodeAt(0),n="/".charCodeAt(0),o="0".charCodeAt(0),a="a".charCodeAt(0),u="A".charCodeAt(0),i="-".charCodeAt(0),s="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===r||e===i?62:e===n||e===s?63:e<o?-1:e<o+10?e-o+26+26:e<u+26?e-u:e<a+26?e-a+26:void 0}t.toByteArray=function(t){var r,n,o,a,u,i;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var s=t.length;u="="===t.charAt(s-2)?2:"="===t.charAt(s-1)?1:0,i=new e(3*t.length/4-u),o=u>0?t.length-4:t.length;var f=0;function l(t){i[f++]=t}for(r=0,n=0;r<o;r+=4,n+=3)l((16711680&(a=c(t.charAt(r))<<18|c(t.charAt(r+1))<<12|c(t.charAt(r+2))<<6|c(t.charAt(r+3))))>>16),l((65280&a)>>8),l(255&a);return 2===u?l(255&(a=c(t.charAt(r))<<2|c(t.charAt(r+1))>>4)):1===u&&(l((a=c(t.charAt(r))<<10|c(t.charAt(r+1))<<4|c(t.charAt(r+2))>>2)>>8&255),l(255&a)),i},t.fromByteArray=function(t){var e,r,n,o,a=t.length%3,u="";function i(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}for(e=0,n=t.length-a;e<n;e+=3)u+=i((o=r=(t[e]<<16)+(t[e+1]<<8)+t[e+2])>>18&63)+i(o>>12&63)+i(o>>6&63)+i(63&o);switch(a){case 1:u+=i((r=t[t.length-1])>>2),u+=i(r<<4&63),u+="==";break;case 2:u+=i((r=(t[t.length-2]<<8)+t[t.length-1])>>10),u+=i(r>>4&63),u+=i(r<<2&63),u+="="}return u}}(e)},741:t=>{function e(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,r){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=r,this.destLen=0,this.ltree=new e,this.dtree=new e}var n=new e,o=new e,a=new Uint8Array(30),u=new Uint16Array(30),i=new Uint8Array(30),s=new Uint16Array(30),c=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=new e,l=new Uint8Array(320);function h(t,e,r,n){var o,a;for(o=0;o<r;++o)t[o]=0;for(o=0;o<30-r;++o)t[o+r]=o/r|0;for(a=n,o=0;o<30;++o)e[o]=a,a+=1<<t[o]}var d=new Uint16Array(16);function p(t,e,r,n){var o,a;for(o=0;o<16;++o)t.table[o]=0;for(o=0;o<n;++o)t.table[e[r+o]]++;for(t.table[0]=0,a=0,o=0;o<16;++o)d[o]=a,a+=t.table[o];for(o=0;o<n;++o)e[r+o]&&(t.trans[d[e[r+o]]++]=o)}function b(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function v(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function y(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=0,n=0,o=0,a=t.tag;do{n=2*n+(1&a),a>>>=1,++o,r+=e.table[o],n-=e.table[o]}while(n>=0);return t.tag=a,t.bitcount-=o,e.trans[r+n]}function g(t,e,r){var n,o,a,u,i,s;for(n=v(t,5,257),o=v(t,5,1),a=v(t,4,4),u=0;u<19;++u)l[u]=0;for(u=0;u<a;++u){var h=v(t,3,0);l[c[u]]=h}for(p(f,l,0,19),i=0;i<n+o;){var d=y(t,f);switch(d){case 16:var b=l[i-1];for(s=v(t,2,3);s;--s)l[i++]=b;break;case 17:for(s=v(t,3,3);s;--s)l[i++]=0;break;case 18:for(s=v(t,7,11);s;--s)l[i++]=0;break;default:l[i++]=d}}p(e,l,0,n),p(r,l,n,o)}function A(t,e,r){for(;;){var n,o,c,f,l=y(t,e);if(256===l)return 0;if(l<256)t.dest[t.destLen++]=l;else for(n=v(t,a[l-=257],u[l]),o=y(t,r),f=c=t.destLen-v(t,i[o],s[o]);f<c+n;++f)t.dest[t.destLen++]=t.dest[f]}}function w(t){for(var e,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return-3;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,0}!function(t,e){var r;for(r=0;r<7;++r)t.table[r]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,r=0;r<24;++r)t.trans[r]=256+r;for(r=0;r<144;++r)t.trans[24+r]=r;for(r=0;r<8;++r)t.trans[168+r]=280+r;for(r=0;r<112;++r)t.trans[176+r]=144+r;for(r=0;r<5;++r)e.table[r]=0;for(e.table[5]=32,r=0;r<32;++r)e.trans[r]=r}(n,o),h(a,u,4,3),h(i,s,2,1),a[28]=0,u[28]=258,t.exports=function(t,e){var a,u,i=new r(t,e);do{switch(a=b(i),v(i,2,0)){case 0:u=w(i);break;case 1:u=A(i,n,o);break;case 2:g(i,i.ltree,i.dtree),u=A(i,i.ltree,i.dtree);break;default:u=-3}if(0!==u)throw new Error("Data error")}while(!a);return i.destLen<i.dest.length?"function"==typeof i.dest.slice?i.dest.slice(0,i.destLen):i.dest.subarray(0,i.destLen):i.dest}},667:(t,e,r)=>{const n=r(741),{swap32LE:o}=r(288);t.exports=class{constructor(t){const e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice;if(e||t instanceof Uint8Array){let r;if(e)this.highStart=t.readUInt32LE(0),this.errorValue=t.readUInt32LE(4),r=t.readUInt32LE(8),t=t.slice(12);else{const e=new DataView(t.buffer);this.highStart=e.getUint32(0,!0),this.errorValue=e.getUint32(4,!0),r=e.getUint32(8,!0),t=t.subarray(12)}t=n(t,new Uint8Array(r)),t=n(t,new Uint8Array(r)),o(t),this.data=new Uint32Array(t.buffer)}else({data:this.data,highStart:this.highStart,errorValue:this.errorValue}=t)}get(t){let e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=this.data[e+(t>>5&63)],e=(e<<2)+(31&t),this.data[e]):this.data[this.data.length-4]}}},288:t=>{const e=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],r=(t,e,r)=>{let n=t[e];t[e]=t[r],t[r]=n};t.exports={swap32LE:t=>{e&&(t=>{const e=t.length;for(let n=0;n<e;n+=4)r(t,n,n+3),r(t,n+1,n+2)})(t)}}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};return(()=>{"use strict";r.d(n,{default:()=>M});var t=window;function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,"string");if("object"!=e(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(r)?r:r+""}var u,i=function(){return e=function e(r,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.replaceNode=function(e,r){var n=t.document.createRange();n.selectNode(e);var o=n.createContextualFragment(r);e.parentNode&&(e.parentNode.insertBefore(o,e),e.parentNode.removeChild(e))},this.transformFunctions=r,this.options=n},(r=[{key:"processHtmlWithFunctions",value:function(t){var e=this;return""===t?t:this.transformFunctions.reduce((function(t,r){return e.processHtml(t,r)}),t)}},{key:"processHtml",value:function(t,e){var r=this;if(""===t)return t;var n=s(t),o=c(n.body);return o.forEach((function(t,n){var a=o[n+1]||null,u=r.getTransformedHtml(t,a,e);r.replaceNode(t,u)})),n.body.innerHTML}},{key:"getTransformedHtml",value:function(t,e,r){return r(t.nodeValue||"",e&&e.nodeValue||"",this.options)}}])&&o(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r}(),s=function(e){return(new t.DOMParser).parseFromString(e,"text/html")},c=function(e){for(var r=t.document.createTreeWalker(e,t.NodeFilter.SHOW_TEXT),n=r.nextNode(),o=[];n;)n.nodeValue&&""!==n.nodeValue.trim()&&o.push(n),n=r.nextNode();return o},f=i,l=r(667),h=r(954);const d=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,1,1,1,0,0,4,2,4,1,1,1,1,1,0,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,4,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,1,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0]],p=new l(h.toByteArray("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")),b=function(t){switch(t){case 33:case 39:case 40:case 42:return 12;case 35:return 5;default:return t}},v=function(t){switch(t){case 37:case 38:return 34;case 41:return 22;default:return t}};class y{constructor(t,e=!1){this.position=t,this.required=e}}u=class{nextCodePoint(){const t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos);return 55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t}nextCharClass(){return b(p.get(this.nextCodePoint()))}getSimpleBreak(){switch(this.nextClass){case 41:return!1;case 34:case 37:case 38:return this.curClass=34,!1;case 36:return this.curClass=36,!1}return null}getPairTableBreak(t){let e=!1;switch(d[this.curClass][this.nextClass]){case 0:e=!0;break;case 1:e=41===t;break;case 2:if(e=41===t,!e)return e=!1,e;break;case 3:if(41!==t)return e}return this.LB8a&&(e=!1),!this.LB21a||16!==this.curClass&&17!==this.curClass?this.LB21a=13===this.curClass:(e=!1,this.LB21a=!1),28===this.curClass?(this.LB30a++,2==this.LB30a&&28===this.nextClass&&(e=!0,this.LB30a=0)):this.LB30a=0,this.curClass=this.nextClass,e}nextBreak(){if(null==this.curClass){let t=this.nextCharClass();this.curClass=v(t),this.nextClass=t,this.LB8a=31===t,this.LB30a=0}for(;this.pos<this.string.length;){this.lastPos=this.pos;const t=this.nextClass;if(this.nextClass=this.nextCharClass(),34===this.curClass||36===this.curClass&&37!==this.nextClass)return this.curClass=v(b(this.nextClass)),new y(this.lastPos,!0);let e=this.getSimpleBreak();if(null===e&&(e=this.getPairTableBreak(t)),this.LB8a=31===this.nextClass,e)return new y(this.lastPos)}return this.lastPos<this.string.length?(this.lastPos=this.string.length,new y(this.string.length)):null}constructor(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null,this.LB8a=!1,this.LB21a=!1,this.LB30a=0}};var g=/(?:[\t-\r -~\xA0-\xA5\xAA\xAC\xB1-\xB3\xB9\xBA\xBF-\u02B8\u02E0-\u02E4\u0363-\u036F\u0485\u0486\u0951\u0952\u10FB\u1680\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2000-\u200A\u2018\u2019\u201C\u201D\u2028\u2029\u202F\u2030\u205F\u2070\u2071\u2074-\u208E\u2090-\u209C\u20AC\u20F0\u212A\u212B\u2132\u214E\u2160-\u2188\u2202\u2205\u220F\u2211\u2212\u221A\u221E\u222B\u2248\u2260\u2264\u2265\u2C60-\u2C7F\u3000\uA700-\uA707\uA722-\uA787\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA7FF\uA92E\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uFB00-\uFB06\uFEFF\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A])+/g,A=/,/,w=/\./,m=/(|[|{|〔|〈|《|「|『|【|〘|〖|“|‘/,P=/)|]|}|〕|〉|》|」|』|】|〙|〗|”|’/,x=/・|:|;/,B=/、|,/,O=/。|./,S=new RegExp("[\\p{scx=Hiragana}\\p{scx=Katakana}|ヲ-゚\\p{scx=Han}".concat(m.source).concat(P.source).concat(x.source).concat(B.source).concat(O.source,"]+"),"u"),L=new RegExp("[".concat("—‥…_",String.fromCharCode(9472),"-").concat(String.fromCharCode(9599),"]+"),"g"),j=/[\s\u00A0]/,F={isLatin:function(t){return g.test(t)},isJapanese:function(t){return S.test(t)},hasLanguageTransition:function(t,e){return F.isJapanese(t)!==F.isJapanese(e)},shouldAddThinSpace:function(t,e){return F.hasLanguageTransition(t,e)&&(r=e,!new RegExp("^[".concat(O.source).concat(B.source).concat(w.source).concat(A.source,"]")).test(r));var r}},C="typesetting",H=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=r?' style="'.concat(r,'"'):"";return'<span class="'.concat(e,'"').concat(o).concat(n,">").concat(t,"</span>")},D=function(t,e,r,n){var o="letter-spacing: ".concat(r,";"),a=' data-content="'.concat(n?" ":" ",'"');return H(t,e,o,a)},X=function(t){var e=new Intl.Segmenter("ja-JP",{granularity:"word"});return Array.from(e.segment(t),(function(t){return t.segment}))},k=function(t,e){return!j.test(t)&&!j.test(e)&&(F.shouldAddThinSpace(t,e)||function(t,e){for(var r=new RegExp("(".concat(P.source,"|").concat(B.source,"|").concat(O.source,")")),n={spaceBefore:{regex:m,hasSpaceBefore:!0,hasSpaceAfter:!1},spaceAfter:{regex:r,hasSpaceBefore:!1,hasSpaceAfter:!0},spaceBoth:{regex:x,hasSpaceBefore:!0,hasSpaceAfter:!0}},o=0,a=Object.values(n);o<a.length;o++){var u=a[o],i=u.regex,s=u.hasSpaceBefore,c=u.hasSpaceAfter;if(s&&i.test(e)&&!i.test(t))return!0;if(c&&i.test(t)&&!i.test(e))return!0}return!1}(t,e))},W=function(t,e){var r=t.slice(-1)+e.slice(0,1),n=new u(r).nextBreak();return!!n&&1===n.position},z=function(t,e,r){var n=X(t),o=X(e);return n.reduce((function(t,e,n,a){return t+function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0;if(!e)return t;var n,o=r.insertThinSpaces&&k(t,e),a=W(t,e);return o?t+function(t,e){var r="".concat(C,"-thin-space");return D("",r,t,e)}(null!==(n=r.thinSpaceWidth)&&void 0!==n?n:"",a):r.useWordBreak&&a?t+"<wbr>":t}(e,a[n+1]||o[0],r)}),"")};function T(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var U=function(t,e,r){return" "===t?t:(n=t,o=r.useWordBreak,a="".concat(C,"-wrapper"),u="".concat(C,"-word-break"),i=o?"".concat(a," ").concat(u):a,H(n,i));var n,o,a,u,i},V=function(t,e,r){return" "===t?t:r.wrapLatin&&F.isLatin(t)?t.replace(g,(function(t){return e=t,r="".concat(C,"-latin"),H(e,r);var e,r})):r.noSpaceBetweenNoBreaks&&(n=t,L.test(n))?t.replace(L,(function(t){return e=t,r="".concat(C,"-no-breaks"),H(e,r);var e,r})):t;var n},E=function(t,e,r){var n,o=function(t){if(Array.isArray(t))return T(t)}(n=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return T(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?T(t,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return o.map((function(t,n){var a,u=o[n+1]||e[0]||"",i=null===(a=r.kerningRules)||void 0===a?void 0:a.find((function(e){return e.between[0]===t&&e.between[1]===u}));if(i){var s="number"==typeof i.value?i.value:parseInt(i.value,10),c=!r.useWordBreak&&W(t,u);return t+function(t,e){if(0===t)return"";var r="".concat(C,"-kerning");if(t<0){var n="margin: ".concat(t/1e3/2+"em",";");return H("",r,n)}return D("",r,t/1e3+"em",e)}(s,c)}return t})).join("")};function N(t){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},N(t)}function I(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Z(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?I(Object(r),!0).forEach((function(e){var n,o,a;n=t,o=e,a=r[e],(o=R(o))in n?Object.defineProperty(n,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[o]=a})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,R(n.key),n)}}function R(t){var e=function(t,e){if("object"!=N(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=N(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==N(e)?e:e+""}function K(t,e,r){return e=Q(e),function(t,e){if(e&&("object"===N(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,J()?Reflect.construct(e,r||[],Q(t).constructor):e.apply(t,r))}function J(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(J=function(){return!!t})()}function Q(t){return Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Q(t)}function G(t,e){return G=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},G(t,e)}var M=function(e){function r(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);var e=void 0!==Intl.Segmenter;e||console.warn("Intl.Segmenter is not supported in this environment. \nTherefore, the options `useWordBreak` and `insertThinSpaces` will be ignored. \nFor more information about Intl.Segmenter, please visit:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter");var n=e?[U,z,V,E]:[V,E],o=r.validateOptions(t);return K(this,r,[n,o])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&G(t,e)}(r,e),n=r,a=[{key:"getDefaultOptions",value:function(){return{useWordBreak:!0,wrapLatin:!0,noSpaceBetweenNoBreaks:!0,insertThinSpaces:!0,thinSpaceWidth:"0.2em",kerningRules:[]}}},{key:"validateOptions",value:function(t){return t.kerningRules&&(t.kerningRules=t.kerningRules.filter(r.isValidKerningRule)),Z(Z({},r.getDefaultOptions()),t)}},{key:"isValidKerningRule",value:function(t){return 1===t.between[0].length&&1===t.between[1].length||(console.warn("Kerning rule between '".concat(t.between[0],"' and '").concat(t.between[1],"' must be single characters.")),!1)}}],(o=[{key:"render",value:function(t){return t?this.processHtmlWithFunctions(t):""}},{key:"renderToElements",value:function(t){var e=this;t&&(Array.isArray(t)||(t=[t]),t.forEach((function(t){var r=e.render(t.innerHTML);t.innerHTML=r})))}},{key:"renderToSelector",value:function(e){if(e){var r=t.document.querySelectorAll(e);this.renderToElements(Array.from(r))}}}])&&q(n.prototype,o),a&&q(n,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o,a}(f)})(),n.default})()));
|
package/dist/index.js
CHANGED
|
@@ -64,8 +64,7 @@ class Typesetter extends HTMLProcessor {
|
|
|
64
64
|
* @return 処理後のHTML文字列。
|
|
65
65
|
*/
|
|
66
66
|
render(srcHtml) {
|
|
67
|
-
if (!srcHtml)
|
|
68
|
-
return "";
|
|
67
|
+
if (!srcHtml) return "";
|
|
69
68
|
return this.processHtmlWithFunctions(srcHtml);
|
|
70
69
|
}
|
|
71
70
|
/**
|
|
@@ -75,8 +74,7 @@ class Typesetter extends HTMLProcessor {
|
|
|
75
74
|
* @param elements - スタイルを適用するElementまたはHTMLElementの配列。
|
|
76
75
|
*/
|
|
77
76
|
renderToElements(elements) {
|
|
78
|
-
if (!elements)
|
|
79
|
-
return;
|
|
77
|
+
if (!elements) return;
|
|
80
78
|
if (!Array.isArray(elements)) {
|
|
81
79
|
elements = [elements];
|
|
82
80
|
}
|
|
@@ -92,8 +90,7 @@ class Typesetter extends HTMLProcessor {
|
|
|
92
90
|
* @param selector - スタイルを適用する要素を選択するCSSセレクタ。
|
|
93
91
|
*/
|
|
94
92
|
renderToSelector(selector) {
|
|
95
|
-
if (!selector)
|
|
96
|
-
return;
|
|
93
|
+
if (!selector) return;
|
|
97
94
|
const elements = win.document.querySelectorAll(selector);
|
|
98
95
|
this.renderToElements(Array.from(elements));
|
|
99
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-separators.d.ts","sourceRoot":"","sources":["../src/insert-separators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAS7C,QAAA,MAAM,sBAAsB,gBAAiB,MAAM,YAAY,MAAM,WAAW,kBAAkB,KAAG,MAWpG,CAAA;AAOD,QAAA,MAAM,cAAc,QAAS,MAAM,KAAG,MAAM,EAG3C,CAAA;AAQD,QAAA,MAAM,sBAAsB,YAAa,MAAM,qCAAsB,kBAAkB,KAAG,MAgBzF,CAAA;AAQD,QAAA,MAAM,kBAAkB,YAAa,MAAM,QAAQ,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"insert-separators.d.ts","sourceRoot":"","sources":["../src/insert-separators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAS7C,QAAA,MAAM,sBAAsB,gBAAiB,MAAM,YAAY,MAAM,WAAW,kBAAkB,KAAG,MAWpG,CAAA;AAOD,QAAA,MAAM,cAAc,QAAS,MAAM,KAAG,MAAM,EAG3C,CAAA;AAQD,QAAA,MAAM,sBAAsB,YAAa,MAAM,qCAAsB,kBAAkB,KAAG,MAgBzF,CAAA;AAQD,QAAA,MAAM,kBAAkB,YAAa,MAAM,QAAQ,MAAM,KAAG,OAK3D,CAAA;AAQD,QAAA,MAAM,WAAW,YAAa,MAAM,QAAQ,MAAM,KAAG,OAKpD,CAAA;AAED,eAAe,sBAAsB,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -17,8 +17,7 @@ const createSegments = (src) => {
|
|
|
17
17
|
return Array.from(segmenter.segment(src), ({ segment }) => segment);
|
|
18
18
|
};
|
|
19
19
|
const addSeparatorsToSegment = (current, next = "", options) => {
|
|
20
|
-
if (!next)
|
|
21
|
-
return current;
|
|
20
|
+
if (!next) return current;
|
|
22
21
|
const addThinSpace = options.insertThinSpaces && shouldAddThinSpace(current, next);
|
|
23
22
|
const breakable = isBreakable(current, next);
|
|
24
23
|
if (addThinSpace) {
|
|
@@ -31,8 +30,7 @@ const addSeparatorsToSegment = (current, next = "", options) => {
|
|
|
31
30
|
return current;
|
|
32
31
|
};
|
|
33
32
|
const shouldAddThinSpace = (current, next) => {
|
|
34
|
-
if (whitespaceRegex.test(current) || whitespaceRegex.test(next))
|
|
35
|
-
return false;
|
|
33
|
+
if (whitespaceRegex.test(current) || whitespaceRegex.test(next)) return false;
|
|
36
34
|
return LanguageClass.shouldAddThinSpace(current, next) || CharClass.shouldAddThinSpace(current, next);
|
|
37
35
|
};
|
|
38
36
|
const isBreakable = (current, next) => {
|
package/dist/typesetter.css
CHANGED
|
@@ -13,28 +13,28 @@
|
|
|
13
13
|
* Safari のリーダーモード対応
|
|
14
14
|
* See: {@link https://github.com/yamatoiizuka/palt-typesetting/issues/96}
|
|
15
15
|
*/
|
|
16
|
-
.
|
|
16
|
+
.typesetting-wrapper wbr {
|
|
17
17
|
visibility: hidden;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
.
|
|
20
|
+
.typesetting-word-break {
|
|
21
21
|
word-break: keep-all;
|
|
22
22
|
overflow-wrap: anywhere;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
.
|
|
26
|
-
.
|
|
25
|
+
.typesetting-thin-space,
|
|
26
|
+
.typesetting-kerning {
|
|
27
27
|
letter-spacing: 0; /* 親要素から継承される letter-spacing の影響を無視します。 */
|
|
28
28
|
user-select: none; /* ユーザーによるテキストのコピーを無効にします。 */
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
.
|
|
32
|
-
.
|
|
31
|
+
.typesetting-thin-space[data-content]::after,
|
|
32
|
+
.typesetting-kerning[data-content]::after {
|
|
33
33
|
content: attr(data-content); /* Space または No-Break Space */
|
|
34
34
|
font-family: ling-one; /* カスタムフォントのスペースを使用します。 */
|
|
35
35
|
line-height: 0; /* 空白による行の高さの影響を無視します。 */
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
.
|
|
38
|
+
.typesetting-no-breaks {
|
|
39
39
|
letter-spacing: 0; /* 親要素から継承される letter-spacing の影響を無視します。 */
|
|
40
40
|
}
|
package/dist/util-regex.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export declare const latinRegex: RegExp;
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const latinCommaRegex: RegExp;
|
|
3
|
+
export declare const latinPeriodRegex: RegExp;
|
|
3
4
|
export declare const openingsRegex: RegExp;
|
|
4
5
|
export declare const closingsRegex: RegExp;
|
|
5
6
|
export declare const middleDotsRegex: RegExp;
|
|
6
7
|
export declare const commasRegex: RegExp;
|
|
7
8
|
export declare const periodsRegex: RegExp;
|
|
9
|
+
export declare const japaneseRegex: RegExp;
|
|
8
10
|
export declare const noBreakRulesRegex: RegExp;
|
|
9
11
|
export declare const whitespaceRegex: RegExp;
|
|
10
12
|
//# sourceMappingURL=util-regex.d.ts.map
|
package/dist/util-regex.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util-regex.d.ts","sourceRoot":"","sources":["../src/util-regex.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,QAC6E,CAAA;AAKpG,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"util-regex.d.ts","sourceRoot":"","sources":["../src/util-regex.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,QAC6E,CAAA;AAKpG,eAAO,MAAM,eAAe,QAAM,CAAA;AAKlC,eAAO,MAAM,gBAAgB,QAAO,CAAA;AAKpC,eAAO,MAAM,aAAa,QAA8B,CAAA;AAKxD,eAAO,MAAM,aAAa,QAA8B,CAAA;AAKxD,eAAO,MAAM,eAAe,QAAU,CAAA;AAKtC,eAAO,MAAM,WAAW,QAAQ,CAAA;AAKhC,eAAO,MAAM,YAAY,QAAQ,CAAA;AAKjC,eAAO,MAAM,aAAa,QAGzB,CAAA;AAKD,eAAO,MAAM,iBAAiB,QAG7B,CAAA;AAKD,eAAO,MAAM,eAAe,QAAe,CAAA"}
|
package/dist/util-regex.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
const latinRegex = /[\p{scx=Latin}0-9⁰¹²³⁴-⁾₀-₎¢¤$€£¥+−×÷=≠><≥≤±≈~¬∅∞∫∏∑√∂%‰@&.,:;!¡?¿'"‘’“”\-(){}[\]|/\\^_`*#\s]+/gu;
|
|
2
|
-
const
|
|
2
|
+
const latinCommaRegex = /,/;
|
|
3
|
+
const latinPeriodRegex = /\./;
|
|
3
4
|
const openingsRegex = /(|[|{|〔|〈|《|「|『|【|〘|〖|“|‘/;
|
|
4
5
|
const closingsRegex = /)|]|}|〕|〉|》|」|』|】|〙|〗|”|’/;
|
|
5
6
|
const middleDotsRegex = /・|:|;/;
|
|
6
7
|
const commasRegex = /、|,/;
|
|
7
8
|
const periodsRegex = /。|./;
|
|
9
|
+
const japaneseRegex = new RegExp(
|
|
10
|
+
`[\\p{scx=Hiragana}\\p{scx=Katakana}|\uFF66-\uFF9F\\p{scx=Han}${openingsRegex.source}${closingsRegex.source}${middleDotsRegex.source}${commasRegex.source}${periodsRegex.source}]+`,
|
|
11
|
+
"u"
|
|
12
|
+
);
|
|
8
13
|
const noBreakRulesRegex = new RegExp(
|
|
9
14
|
`[${"\u2014\u2025\u2026\uFF3F"}${String.fromCharCode(9472)}-${String.fromCharCode(9599)}]+`,
|
|
10
15
|
"g"
|
|
@@ -14,6 +19,8 @@ export {
|
|
|
14
19
|
closingsRegex,
|
|
15
20
|
commasRegex,
|
|
16
21
|
japaneseRegex,
|
|
22
|
+
latinCommaRegex,
|
|
23
|
+
latinPeriodRegex,
|
|
17
24
|
latinRegex,
|
|
18
25
|
middleDotsRegex,
|
|
19
26
|
noBreakRulesRegex,
|
package/dist/util-tags.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util-tags.d.ts","sourceRoot":"","sources":["../src/util-tags.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,SAAS,QAAO,MAErB,CAAA;AAQD,QAAA,MAAM,eAAe,mBAAoB,MAAM,cAAc,OAAO,KAAG,MAItE,CAAA;AASD,QAAA,MAAM,aAAa,iBAAkB,MAAM,cAAc,OAAO,KAAG,MAclE,CAAA;AAQD,QAAA,MAAM,iBAAiB,SAAU,MAAM,iBAAiB,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"util-tags.d.ts","sourceRoot":"","sources":["../src/util-tags.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,SAAS,QAAO,MAErB,CAAA;AAQD,QAAA,MAAM,eAAe,mBAAoB,MAAM,cAAc,OAAO,KAAG,MAItE,CAAA;AASD,QAAA,MAAM,aAAa,iBAAkB,MAAM,cAAc,OAAO,KAAG,MAclE,CAAA;AAQD,QAAA,MAAM,iBAAiB,SAAU,MAAM,iBAAiB,OAAO,KAAG,MAKjE,CAAA;AAOD,QAAA,MAAM,eAAe,YAAa,MAAM,KAAG,MAG1C,CAAA;AAOD,QAAA,MAAM,kBAAkB,YAAa,MAAM,KAAG,MAG7C,CAAA;AAkCD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
|
package/dist/util-tags.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const prefix = "
|
|
1
|
+
const prefix = "typesetting";
|
|
2
2
|
const createWbr = () => {
|
|
3
3
|
return "<wbr>";
|
|
4
4
|
};
|
|
@@ -8,8 +8,7 @@ const createThinSpace = (thinSpaceWidth, breakable) => {
|
|
|
8
8
|
return createSpacer(content, className, thinSpaceWidth, breakable);
|
|
9
9
|
};
|
|
10
10
|
const createKerning = (kerningValue, breakable) => {
|
|
11
|
-
if (kerningValue === 0)
|
|
12
|
-
return "";
|
|
11
|
+
if (kerningValue === 0) return "";
|
|
13
12
|
const content = "";
|
|
14
13
|
const className = `${prefix}-kerning`;
|
|
15
14
|
if (kerningValue < 0) {
|
|
@@ -22,7 +21,7 @@ const createKerning = (kerningValue, breakable) => {
|
|
|
22
21
|
}
|
|
23
22
|
};
|
|
24
23
|
const applyWrapperStyle = (text, useWordBreak) => {
|
|
25
|
-
const wrapperName = `${prefix}
|
|
24
|
+
const wrapperName = `${prefix}-wrapper`;
|
|
26
25
|
const wordBreakName = `${prefix}-word-break`;
|
|
27
26
|
const className = useWordBreak ? `${wrapperName} ${wordBreakName}` : wrapperName;
|
|
28
27
|
return createStyledSpan(text, className);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util-text-classes.d.ts","sourceRoot":"","sources":["../src/util-text-classes.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,SAAS;8BAMa,MAAM,KAAG,OAAO;kCAUZ,MAAM,QAAQ,MAAM,KAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"util-text-classes.d.ts","sourceRoot":"","sources":["../src/util-text-classes.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,SAAS;8BAMa,MAAM,KAAG,OAAO;kCAUZ,MAAM,QAAQ,MAAM,KAAG,OAAO;qCA8C3B,MAAM,KAAG,OAAO;CAQlD,CAAA;AAOD,QAAA,MAAM,aAAa;uBAME,MAAM,KAAG,OAAO;0BASb,MAAM,KAAG,OAAO;qCAWL,MAAM,QAAQ,MAAM,KAAG,OAAO;kCAUjC,MAAM,QAAQ,MAAM,KAAG,OAAO;CAG7D,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -51,7 +51,9 @@ const CharClass = {
|
|
|
51
51
|
* @return {boolean} 最初の文字が句読点であればtrueを返します。
|
|
52
52
|
*/
|
|
53
53
|
startsWithPunctuation: (segment) => {
|
|
54
|
-
const combinedRegex = new RegExp(
|
|
54
|
+
const combinedRegex = new RegExp(
|
|
55
|
+
`^[${util.periodsRegex.source}${util.commasRegex.source}${util.latinPeriodRegex.source}${util.latinCommaRegex.source}]`
|
|
56
|
+
);
|
|
55
57
|
return combinedRegex.test(segment);
|
|
56
58
|
}
|
|
57
59
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "palt-typesetting",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.7.2",
|
|
4
|
+
"description": "Typesetting Library for Proportional Spacing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -44,13 +44,10 @@
|
|
|
44
44
|
"@types/node": "^20",
|
|
45
45
|
"@typescript-eslint/eslint-plugin": "^7.1.0",
|
|
46
46
|
"@typescript-eslint/parser": "^7.1.0",
|
|
47
|
-
"babel-jest": "^29.7.0",
|
|
48
47
|
"babel-loader": "^9.1.3",
|
|
49
48
|
"clean-css-cli": "^5.6.3",
|
|
50
|
-
"
|
|
51
|
-
"esbuild": "^0.20.1",
|
|
49
|
+
"esbuild": "^0.21.2",
|
|
52
50
|
"eslint": "^8",
|
|
53
|
-
"style-loader": "^3.3.4",
|
|
54
51
|
"typescript": "^5",
|
|
55
52
|
"vitest": "^1.2.2",
|
|
56
53
|
"webpack": "^5.90.3",
|
package/types/index.d.ts
CHANGED
|
@@ -19,13 +19,13 @@ export interface TypesettingOptions {
|
|
|
19
19
|
useWordBreak?: boolean
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* 英数を .
|
|
22
|
+
* 英数を .typesetting-latin でラップします。
|
|
23
23
|
* useWordBreak が true の場合にのみ有効です。
|
|
24
24
|
*/
|
|
25
25
|
wrapLatin?: boolean
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* 分離禁則文字を .
|
|
28
|
+
* 分離禁則文字を .typesetting-no-breaks でラップし、文字間を 0 に設定します。
|
|
29
29
|
* useWordBreak が true の場合にのみ有効です。
|
|
30
30
|
*/
|
|
31
31
|
noSpaceBetweenNoBreaks?: boolean
|