|
1 | 1 | from typing import Optional
|
2 |
| -from PIL import Image, ImageDraw, ImageFont |
| 2 | +from PIL import Image, ImageDraw |
3 | 3 | from renderer.base import LayerBase
|
4 | 4 | from renderer.const import COLORS_NORMAL
|
5 | 5 | from renderer.data import Message, ReplayData
|
6 | 6 | from renderer.render import Renderer
|
7 | 7 | from functools import lru_cache
|
8 |
| -from langdetect import detect |
9 |
| -from hanzidentifier import has_chinese |
10 | 8 |
|
11 | 9 | class LayerChatBase(LayerBase):
|
12 | 10 | """The class for handling in-game chat messages.
|
@@ -64,7 +62,9 @@ def build(self, message: Message) -> Image.Image:
|
64 | 62 | # if image := self._lines.get(m_hash, None):
|
65 | 63 | # return image
|
66 | 64 |
|
67 |
| - self._font = self._pick_font_with_message(message) |
| 65 | + self._font = self._renderer.resman.load_font_with_message( |
| 66 | + message |
| 67 | + ) |
68 | 68 | base = Image.new("RGBA", (560, 17))
|
69 | 69 | draw = ImageDraw.Draw(base)
|
70 | 70 | player = self._players[message.player_id]
|
@@ -142,32 +142,3 @@ def unpack_color(packed_value: int) -> tuple:
|
142 | 142 | packed_value = packed_value >> bit
|
143 | 143 | values.append(value)
|
144 | 144 | return tuple(reversed(values))
|
145 |
| - |
146 |
| - def _pick_font_with_message(self, message: Message) -> ImageFont.FreeTypeFont: |
147 |
| - """Pick the font based on the message language. |
148 |
| -
|
149 |
| - Args: |
150 |
| - message (Message): The message. |
151 |
| -
|
152 |
| - Returns: |
153 |
| - ImageFont.FreeTypeFont: The font. |
154 |
| - """ |
155 |
| - chat_message = message.message |
156 |
| - language = detect(message.message) # this can detect Chinese as Korean |
157 |
| - if has_chinese(chat_message): |
158 |
| - return self._renderer.resman.load_font( |
159 |
| - filename="warhelios_bold_zh.ttf", size=12 |
160 |
| - ) |
161 |
| - |
162 |
| - if language == "ja": |
163 |
| - return self._renderer.resman.load_font( |
164 |
| - filename="warhelios_bold_jp.ttf", size=12 |
165 |
| - ) |
166 |
| - elif language == "ko": |
167 |
| - return self._renderer.resman.load_font( |
168 |
| - filename="warhelios_bold_ko.ttf", size=12 |
169 |
| - ) |
170 |
| - else: # fallback to the default font |
171 |
| - return self._renderer.resman.load_font( |
172 |
| - filename="warhelios_bold.ttf", size=12 |
173 |
| - ) |
0 commit comments