はじめの前のおねがい
できれば「いいね♡」をお願いします。励みになります。
はじめに
このコードはPython 3とPythonista 3に対応しています。本コードはクリップボード内にある通常のアルファベット(ä, ö, üなどには未対応)をUnicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換するコードです。
本コードを実行するとどうなるか
本コードは
- クリップボード内のある通常のアルファベットを検知
- Unicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換
- クリップボードに再コピー
を行います。
例
実行前のクリップボード:
𝔚𝔢𝔩𝔠𝔬𝔪𝔢 𝔱𝔬 𝔱𝔥𝔢 𝔈𝔫𝔤𝔩𝔦𝔰𝔥-𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢 𝔚𝔦𝔨𝔱𝔦𝔬𝔫𝔞𝔯𝔶, 𝔞 𝔠𝔬𝔩𝔩𝔞𝔟𝔬𝔯𝔞𝔱𝔦𝔳𝔢 𝔭𝔯𝔬𝔧𝔢𝔠𝔱 𝔱𝔬 𝔭𝔯𝔬𝔡𝔲𝔠𝔢 𝔞 𝔣𝔯𝔢𝔢-𝔠𝔬𝔫𝔱𝔢𝔫𝔱 𝔪𝔲𝔩𝔱𝔦𝔩𝔦𝔫𝔤𝔲𝔞𝔩 𝔡𝔦𝔠𝔱𝔦𝔬𝔫𝔞𝔯𝔶. ℑ𝔱 𝔞𝔦𝔪𝔰 𝔱𝔬 𝔡𝔢𝔰𝔠𝔯𝔦𝔟𝔢 𝔞𝔩𝔩 𝔴𝔬𝔯𝔡𝔰 𝔬𝔣 𝔞𝔩𝔩 𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢𝔰 𝔲𝔰𝔦𝔫𝔤 𝔡𝔢𝔣𝔦𝔫𝔦𝔱𝔦𝔬𝔫𝔰 𝔞𝔫𝔡 𝔡𝔢𝔰𝔠𝔯𝔦𝔭𝔱𝔦𝔬𝔫𝔰 𝔦𝔫 𝔈𝔫𝔤𝔩𝔦𝔰𝔥.
実行後のクリップボード:
Welcome to the English-language Wiktionary, a collaborative project to produce a free-content multilingual dictionary. It aims to describe all words of all languages using definitions and descriptions in English.
※ 文章出典:英語版Wiktionaryのメインページ
必要なモジュール(Python 3の場合)
pip install pyperclip
ソースコード
# クリップボードの処理とフラクトゥーア文字変換を行うクラス
class FrakturConverter:
def __init__(self):
# クリップボードモジュールのインポート処理
try:
import clipboard # Pythonista用
self.clipboard_available = True
self.clipboard = clipboard
except ImportError:
try:
import pyperclip # Pythonistaでclipboardが使えない場合
self.clipboard_available = False
self.clipboard = pyperclip
except ImportError:
print("どちらのクリップボードモジュールも使用できません。")
self.clipboard_available = None
# フラクトゥーアからローマンアルファベットへの変換辞書(Unicodeコードポイント)
self.conversion_dict = {
0x1D504: 'A', 0x1D505: 'B', 0x212D: 'C', 0x1D507: 'D', 0x1D508: 'E', 0x1D509: 'F', 0x1D50A: 'G',
0x1D50B: 'H', 0x2111: 'I', 0x1D50D: 'J', 0x1D50E: 'K', 0x1D50F: 'L', 0x1D510: 'M', 0x1D511: 'N',
0x1D512: 'O', 0x1D513: 'P', 0x1D514: 'Q', 0x1D515: 'R', 0x1D516: 'S', 0x1D517: 'T', 0x1D518: 'U',
0x1D519: 'V', 0x1D51A: 'W', 0x1D51B: 'X', 0x1D51C: 'Y', 0x2128: 'Z',
0x1D51E: 'a', 0x1D51F: 'b', 0x1D520: 'c', 0x1D521: 'd', 0x1D522: 'e', 0x1D523: 'f', 0x1D524: 'g',
0x1D525: 'h', 0x1D526: 'i', 0x1D527: 'j', 0x1D528: 'k', 0x1D529: 'l', 0x1D52A: 'm', 0x1D52B: 'n',
0x1D52C: 'o', 0x1D52D: 'p', 0x1D52E: 'q', 0x1D52F: 'r', 0x1D530: 's', 0x1D531: 't', 0x1D532: 'u',
0x1D533: 'v', 0x1D534: 'w', 0x1D535: 'x', 0x1D536: 'y', 0x1D537: 'z'
}
# フラクトゥーア文字をローマンアルファベットに変換するメソッド
def fraktur_to_roman(self, text):
result = []
for char in text:
# 文字のUnicodeコードポイントを取得
char_code = ord(char)
if char_code in self.conversion_dict:
result.append(self.conversion_dict[char_code])
else:
result.append(char) # 辞書にない文字はそのまま
return ''.join(result)
# クリップボードのテキストを変換して再設定するメソッド
def convert_clipboard(self):
if self.clipboard_available is not None:
# クリップボードからテキストを取得
if self.clipboard_available:
clipboard_text = self.clipboard.get() # Pythonista用
else:
clipboard_text = self.clipboard.paste() # pyperclip用
# クリップボードの内容を変換
converted_text = self.fraktur_to_roman(clipboard_text)
# 変換後のテキストをクリップボードに再設定
if self.clipboard_available:
self.clipboard.set(converted_text) # Pythonista用
else:
self.clipboard.copy(converted_text) # pyperclip用
print("クリップボードの内容が変換されました。")
print(converted_text)
else:
print("クリップボードモジュールが使用できないため、変換を実行できませんでした。")
# スクリプトが直接実行された場合のみ、クリップボード変換を実行
if __name__ == "__main__":
converter = FrakturConverter()
converter.convert_clipboard()
以上です。
おわりに
別途、26アルファベットをフラクトゥーア(フラクトゥール,亀甲文字,ブラックレター)に変換するPythonコード(Pythonista 3対応)も用意してあります。