じゃがーノート

広告がないうちはどこかで生きています

Safari で任意のデフォルトフォントを指定する

Safari でデフォルトフォントとして明朝体が表示される動作を自分好みに調整した話です。

経緯

Safari で明朝体が表示される

Web サイトにて何もフォントが指定されていない場合、Safari は明朝体で表示します。

フォントが何も指定されていない場合はどのフォントで表示するかを定義したスタイルシートを自前で用意し、Safari の環境設定で設定するとこの動作を変更できます。

f:id:id459547:20210811090320p:plain
Safari スタイルシート設定画面

ですが、セキュリティ強化の一環で、ユーザーがローカルにインストールしたフォントは Safari から参照しなくなりました。

qiita.com

解決策

Web フォントを参照させる

ただし、Web フォントなら参照してくれるようなので、任意のサーバーに設置した Web フォントで描画するよう指定したスタイルシートを作成してみました。

Safari.css

@charset "UTF-8";

/* Web フォント読み込み */
@font-face {
    font-family: '任意のフォント名';
    src: url('https://URL-to-WebFonts.woff2') format('woff2'),
    url('https://URL-to-WebFonts.woff') format('woff');
    font-weight: 400;
}
@font-face {
    font-family: '任意のフォント名';
    src: url('https://URL-to-WebFonts.woff2') format('woff2'),
    url('https://URL-to-WebFonts.woff') format('woff');
    font-weight: 700;
}

/* デフォルトフォント設定 */
* {
    font-family: (英字フォントを指定する場合はここに), 任意のフォント名;
}

/* フォント置き換え */
@font-face {
    font-family: '置き換えるフォント名';
    src: url('https://URL-to-WebFonts.woff2') format('woff2'),
    url('https://URL-to-WebFonts.woff') format('woff');
    font-weight: 400;
}
@font-face {
    font-family: '置き換えるフォント名';
    src: url('https://URL-to-WebFonts.woff2') format('woff2'),
    url('https://URL-to-WebFonts.woff') format('woff');
    font-weight: 700;
}

「フォント置き換え」セクションは、特定のフォントを任意のフォントに置き換える場合に使用します。

スクリーンショット

適用前

f:id:id459547:20210811104029p:plain
スタイルシート 適用前

適用後

f:id:id459547:20210811104033p:plain
スタイルシート 適用後

Far Cry 日本語化

Far Cry Japanese Version was released in 2004.

The Far Cry game available on GOG.com does not include Japanese, but the official patch includes Japanese data, which can be used to play the game in Japanese.

1. Extracting Japanese data

1.1 Download the official patch

Download far_cry_v1.4_cumulative.exe from the official UBI server. 1

1.2 Extracting Japanese data from a patch

The GOG version of Far Cry has already been patched, so even if you run the patch, it will be treated as already installed and force-quit halfway through. Therefore, you need to extract the Japanese data from the patch.

Use Universal Extractor 2 to extract the .MSI file from the patch, and use the standard Windows tool msiexec to extract the Japanese data from the .MSI file.

1.2.1 Extract the .MSI file from the patch

f:id:id459547:20210409201942p:plain
Universal Extractor 2.0.0 RC3

When you extract the file using Universal Extractor 2, you will find Far Cry (Patch 1.4).msi in the extracted file. We will extract the Japanese data from this .msi file.

1.2.2 Extracting Japanese data from the .MSI file

MSI files are created by the Windows Installer included in the Windows SDK, and can be extracted using the msiexec included with Windows.

References:

www.atmarkit.co.jp

Run the following command in PowerShell to extract the .MSI file.

Start-Process msiexec -ArgumentList "/a `"Full path to Far Cry (Patch 1.4).msi`" targetdir=`"Full path to extracting folder`" /qn" -Wait

japanese1.pak and japanese2.pak are will be extracted to .\program files\Ubisoft\Crytek\Far Cry\FCData\Localized\. There are the Japanese data.

2. Applying Japanese data

2.1 Copying movies folder

Duplicate \FarCry\Languages\Movies\English\ in the same folder and rename it to Japanese. Do not delete the English folder.

2.2 Creating a Japanese pak file

Rename FarCry\FCData\Localized\english.pak to japanese.zip and extract it.

Copy msgothic.ttc from %windir%\Fonts\ to .\Languages\Fonts\ in the extracted folder.

Remove the read-only attribute from .\Languages\Fonts\default.xml and edit and save it as follows:

// 2:
<font path="languages/fonts/arialnb.ttf" w="512" h="512"/>
// 2:
<font path="languages/fonts/msgothic.ttc" w="500" h="512"/>

After editing, don't forget to add a read-only attribute to default.xml. Then, archive it the same folder hierarchy as english.pak and rename the file to japanese.pak.

2.3 Putting japanese data

Copy the Japanese data japanese1.pak, japanese2.pak and japanese.pak to .\Far Cry\FCData\Localized.

2.4 Language settings

There are two ways to apply Japanese data.

2.4.1 Using system.cfg

If you have run the game even once, a configuration file called system.cfg will have been generated in the .\Far Cry\ folder.

Edit the g_language property as follows:

...
g_language = "japanese"
...

save it, and launch the game to start with Japanese.

2.4.2 Using Far Cry 設定ツール

First, delete .\Far Cry\system.cfg, .\Far Cry\game.cfg and .\Far Cry\Bin32\system.cfg if they have been generated.

Next, launch .\Far Cry\Bin32\FarCry.exe. This should launch the "Far Cry 設定ツール" instead of the main game. This is because the configuration file doesn't exist.

f:id:id459547:20210411141944p:plain
Language settings in Far Cry 設定ツール

You can select "日本語" from the "言語:" property.

f:id:id459547:20210411142009p:plain
Recommended settings

Also, if you set the "照明の質" to "最高", it may crash on startup. The recommended setting is the "高".

After applying Japanese Data

f:id:id459547:20210411142306p:plain
Main Menu

f:id:id459547:20210411142338p:plain
Cutscene

References

Far Cry - 有志が日本語化した海外ゲームのまとめ Wiki*


  1. I’m not sure if it’s an unstable server or not, but I often get 403 Forbidden. Keep up the good work!

ドメインを跨いだアクセスが CORS ポリシーによってブロックされる

外部サーバーに設置したWebフォントをはてなブログから読み込もうとしても反映されないので、ブラウザの開発コンソールを確認してみると

Access to font at 'https://アクセス先' from origin 'https://アクセス元' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value 'https://アクセス元' that is not equal to the supplied origin.

とエラーになっていました。

原因

ドメインをまたぐアクセスは、クロスサイトスクリプティングなどを防ぐために、アクセス先で指示されていないとブロックするセキュリティ機能が働いているらしい、とざっくり理解しました。CORS ポリシーと呼ばれるらしいです。

解決方法

アクセス先のサーバー側で「ここからのリクエストにはちゃんと応答しますよ」と指示してあげればよいです。

.htaccess に

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "https://アクセス元"
</IfModule>

を記載すると、正常に動作するようになりました。