0
0

26アルファベットをフラクトゥーア(フラクトゥール,亀甲文字,ブラックレター)に変換するPythonコード(Pythonista 3対応)

Last updated at Posted at 2024-09-16

はじめの前のおねがい

できれば「いいね♡」をお願いします。励みになります。

はじめに

このコードはPython 3Pythonista 3に対応しています。本コードはクリップボード内にある通常のアルファベット(ä, ö, üなどには未対応)をUnicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換するコードです。

本コードを実行するとどうなるか

本コードは

  1. クリップボード内のある通常のアルファベットを検知
  2. Unicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換
  3. クリップボードに再コピー

を行います。

実行前のクリップボード:
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の場合)

クリップボードモジュール(Python 3の場合)
pip install pyperclip

ソースコード

Roman_to_Fraktur_conv.py
# クリップボードの処理とローマンアルファベットをフラクトゥーア文字に変換するクラス
class RomanToFrakturConverter:
    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 = {
            'A': '\U0001D504', 'B': '\U0001D505', 'C': '\u212D', 'D': '\U0001D507', 'E': '\U0001D508', 'F': '\U0001D509', 'G': '\U0001D50A',
            'H': '\U0001D50B', 'I': '\u2111', 'J': '\U0001D50D', 'K': '\U0001D50E', 'L': '\U0001D50F', 'M': '\U0001D510', 'N': '\U0001D511',
            'O': '\U0001D512', 'P': '\U0001D513', 'Q': '\U0001D514', 'R': '\U0001D515', 'S': '\U0001D516', 'T': '\U0001D517', 'U': '\U0001D518',
            'V': '\U0001D519', 'W': '\U0001D51A', 'X': '\U0001D51B', 'Y': '\U0001D51C', 'Z': '\u2128',
            'a': '\U0001D51E', 'b': '\U0001D51F', 'c': '\U0001D520', 'd': '\U0001D521', 'e': '\U0001D522', 'f': '\U0001D523', 'g': '\U0001D524',
            'h': '\U0001D525', 'i': '\U0001D526', 'j': '\U0001D527', 'k': '\U0001D528', 'l': '\U0001D529', 'm': '\U0001D52A', 'n': '\U0001D52B',
            'o': '\U0001D52C', 'p': '\U0001D52D', 'q': '\U0001D52E', 'r': '\U0001D52F', 's': '\U0001D530', 't': '\U0001D531', 'u': '\U0001D532',
            'v': '\U0001D533', 'w': '\U0001D534', 'x': '\U0001D535', 'y': '\U0001D536', 'z': '\U0001D537'
        }

    # ローマンアルファベットをフラクトゥーア文字に変換するメソッド
    def roman_to_fraktur(self, text):
        result = []
        for char in text:
            if char in self.conversion_dict:
                result.append(self.conversion_dict[char])
            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.roman_to_fraktur(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 = RomanToFrakturConverter()
    converter.convert_clipboard()

以上です。

おわりに

別途、フラクトゥーア(亀甲文字,ブラックレター)を26アルファベットに変換するコードも用意してあります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0