回答編集履歴

2

懸念事項を追加

2021/07/16 06:19

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36960

test CHANGED
@@ -55,3 +55,15 @@
55
55
  }
56
56
 
57
57
  ```
58
+
59
+
60
+
61
+ ---
62
+
63
+
64
+
65
+ なお、DOMの構造が変わるので、思わぬレイアウトになる場合があります。
66
+
67
+
68
+
69
+ たとえば、[https://jsfiddle.net/Lhankor_Mhy/L061v9yc/3/](https://jsfiddle.net/Lhankor_Mhy/L061v9yc/3/)

1

質問の追記に合わせて追記

2021/07/16 06:19

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36960

test CHANGED
@@ -1,3 +1,57 @@
1
1
  ご質問のご希望から外れますが、CSSのunicode-rangeを使うと、アルファベットだけフォントを変えるというようなことが可能です。
2
2
 
3
3
  [unicode-range - CSS: カスケーディングスタイルシート | MDN](https://developer.mozilla.org/ja/docs/Web/CSS/@font-face/unicode-range)
4
+
5
+
6
+
7
+ ---
8
+
9
+
10
+
11
+ # 質問の追記に合わせて追記
12
+
13
+
14
+
15
+ 既にフォントを使い分けているご様子なので、JavaScriptで処理する方法を提示します。
16
+
17
+ サンプルを置いておきます。
18
+
19
+
20
+
21
+ [https://jsfiddle.net/Lhankor_Mhy/L061v9yc/](https://jsfiddle.net/Lhankor_Mhy/L061v9yc/)
22
+
23
+
24
+
25
+ ```js
26
+
27
+ const nodeIterator = document.createNodeIterator(
28
+
29
+ document.getElementById('target'),
30
+
31
+ NodeFilter.SHOW_TEXT,
32
+
33
+ {
34
+
35
+ acceptNode(node) {
36
+
37
+ return !node.parentElement.classList.contains('alphabet');
38
+
39
+ }
40
+
41
+ }
42
+
43
+ );
44
+
45
+ while (currentNode = nodeIterator.nextNode()) {
46
+
47
+ const template = document.createElement( 'template' )
48
+
49
+ template.innerHTML = currentNode.nodeValue.replace(/(\w+)/g,'<span class="alphabet">$1</span>');
50
+
51
+ currentNode.parentElement.insertBefore(template.content,currentNode);
52
+
53
+ currentNode.parentElement.removeChild(currentNode)
54
+
55
+ }
56
+
57
+ ```