/*
   ja_family_set.css

   Copyleft 🄯 2021 Taiji Yamada <taiji@aihara.co.jp>

   Description:

   これは、フォントファミリ、ja-serif, ja-sans-serif, ja-monospace,
   ja-cursive, ja-fantasy を、互いに目立って識別しやすいように既存の日
   本語フォントシリーズを選択しておくことを目的とする。
   
   フォントファミリ名 ja-* の用途をここで定義する。

   ・serif - 文章の本文に使用されるフォントとする。例えば、運筆の筆圧
   に応じた装飾があるような明朝体フォントである。

   ・sans-serif - 見出しに使用されるフォントとする。例えば、運筆の太さ
   が均一なゴシック体フォントである。

   ・monospace - 機械可読な文字列に使用されるフォントとする。例えば、
   タイプライタ体のような等幅フォントである。字形の区別がしやすく、和
   文が全角幅、欧文が半角幅であることが望ましい。

   ・cursive - 手書きの文章など親しみやすい印象で使用されるフォントと
   する。例えば、筆記体、楷書体、行書体、草書体フォントなどである。こ
   れを本文に使用することも想定する。

   ・fantasy - 口語の文章やくだけた言い回しの文章など、明らかに本文と
   は目立って識別されることが期待されるフォントとする。例えば、丸ゴシッ
   ク体、ポップ体である。

   以下のフォントファミリの選択指針をまとめておく。

   ・JIS X 0213-2000 に対応するフォント

   ・ファミリに別ウェイトが備わるフォント

   ・日本語の縦書きに対応するフォント

   ・原稿用紙に対応するフォント（字送りが半角・全角幅固定に制御可能）

   ・バックスラッシュのコードポイントが円マークではない（そのようなフォ
   ントなら優先度を下げる）

   ・オープンソースの日本語フォントがシステムにインストールされている
   ことを期待（帯域を圧迫するウェブフォントに頼りすぎない）

   Reference(s):

   [1] https://chienomi.org/articles/technology/201910-web-font-settings.html

   ページのデザインを優先し、好みの欧文フォントを選択の幅が狭い和文フォ
   ントに被せることしか配慮しなければ [1] のような指針になろうが、文字
   の正確さや欧文と和文を日本の組版における慣わしに従うという目的であ
   れば、そこで批判されているようなフォントファミリ設定もあり得るだろ
   う。よって、ここでのフォントファミリの設定は [1] で批判されているよ
   うな設定となっているかもしれない。
*/
@font-face { font-family: ja-serif;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("Shippori Mincho"),
    local("Shippori Mincho B1"),
    local("Toppan Bunkyu Mincho"),
    local("Hiragino Mincho ProN"),
    local("Hiragino Mincho Pro"),
    local("Noto Serif Japanese"),
    local("Source Han Serif JP"),
    local("Noto Serif CJK JP"),
    local("Noto Serif JP"),
    local("YuMincho"),
    local("TakaoMjMincho"),
    local("IPAmjMincho"),
    local("TakaoExMincho"),
    local("IPAexMincho"),
    local("HanaMinA"),
    local("HanaMinB"),
    local("BIZ UDPMincho"),
    local("Yu Mincho"),
    local("TakaoPMincho"),
    local("IPAPMincho"),
    local("MS PMincho"),
    local("HGSMinchoB"),
    local("HGPMinchoB"),
    local('math');
}
@font-face { font-family: ja-serif-bold;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("Toppan Bunkyu Midashi Mincho"),
    local("HGSSoeiPresenceEB"),
    local("HGPSoeiPresenceEB"),
    local("HGSoeiPresenceEB"),
    local("HGSMinchoE"),
    local("HGPMinchoE"),
    local("HGMinchoE"),
    local('math');
}
@font-face { font-family: ja-sans-serif-msp;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("Ume P Gothic"),
    local("MS PGothic"),
    local("RobotoJAA"),
    local("IPAMonaPGothic"),
    local("Mona"),
    local("Monapo"),
    local('math');
}
@font-face { font-family: ja-sans-serif;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("Toppan Bunkyu Gothic"),
    local("Hiragino Kaku Gothic ProN"),
    local("Hiragino Kaku Gothic Pro"),
    local("Hiragino Sans"),
    local("Noto Sans Japanese"),
    local("Source Han Sans JP VF"),
    local("Source Han Sans JP"),
    local("Source Han Sans VF"),
    local("Source Han Sans"),
    local("Noto Sans CJK JP"),
    local("Noto Sans JP"),
    local("YuGothic"),
    local("VL PGothic"),
    local("TakaoExGothic"),
    local("IPAexGothic"),
    local("BIZ UDPGothic"),
    local("Yu Gothic"),
    local("TakaoPGothic"),
    local("IPAPGothic"),
    local("Meiryo"),
    local("Ume P Gothic"),
    local("MS PGothic"),
    local("HGSGothicM"),
    local("HGPGothicM"),
    local("Droid Sans Fallback"),
    local('math');
}
@font-face { font-family: ja-sans-serif-bold;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("Toppan Bunkyu Midashi Gothic"),
    local("Hiragino Kaku Gothic StdN"),
    local("HGSSoeiKakugothicUB"),
    local("HGPSoeiKakugothicUB"),
    local("HGSGothicE"),
    local("HGPGothicE"),
    local('math');
}
@font-face { font-family: ja-monospace;
  font-feature-settings: 'tnum' 1, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, 'pnum' 0, 'pwid' 0, 'pkna' 0, 'palt' 0, 'halt' 0;
  /*font-variant-east-asian: full-width;*/
  src:
    local("Source Han Sans HW VF"),
    local("Source Han Sans HW"),
    local("Source Han Mono"),
    local("Noto Sans Mono CJK JP"),
    local("Gen Jyuu Gothic X Monospace"),
    local("M+ 1mn"),
    local("Hiragino Kaku Gothic ProN"),
    local("Hiragino Kaku Gothic Pro"),
    local("Hiragino Sans"),
    local("RobotoJ Mono"),
    local("Osaka-Mono"),
    local("YuGothic"),
    local("VL Gothic"),
    local("TakaoExGothic"),
    local("IPAexGothic"),
    local("Yu Gothic"),
    local("VL PGothic"),
    local("TakaoGothic"),
    local("IPAGothic"),
    local("BIZ UDGothic"),
    local("BIZ UDMincho"),
    local("Meiryo"),
    local("MS Gothic"),
    local("HGGothicM"),
    local("HGMinchoB"),
    local("Kosugi"),
    local("MotoyaLCedar"),
    local("Source Han Code JP"),
    local("Droid Sans Fallback"),
    local('math');
}
@font-face { font-family: ja-monospace-bold;
  font-feature-settings: 'tnum' 1, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, 'pnum' 0, 'pwid' 0, 'pkna' 0, 'palt' 0, 'halt' 0;
  /*font-variant-east-asian: full-width;*/
  src:
    local("HGSoeiKakugothicUB"),
    local("HGGothicE"),
    local('math');
}
@font-face { font-family: ja-cursive;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, *//*'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("Klee"),
    local("YuKyokasho Yoko"),
    local("YuKyokasho"),
    /*local("HGSeikaishotaiPRO"),*/
    local("UD Digi Kyokasho NK-R"),
    local("UD Digi Kyokasho NP-R"),
    local("UD Digi Kyokasho N-R"),
    local("Hiragino Mincho ProN"),
    local("Hiragino Mincho Pro"),
    local("YuMincho"),
    local("TakaoMjMincho"),
    local("IPAmjMincho"),
    local("TakaoExMincho"),
    local("IPAexMincho"),
    local("BIZ UDPMincho"),
    local("Yu Mincho"),
    local("TakaoPMincho"),
    local("IPAPMincho"),
    local("MS PMincho"),
    local("Droid Sans Fallback"),
    local('math');
}
@font-face { font-family: ja-cursive-bold;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, *//*'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("UD Digi Kyokasho NK-B"),
    local("UD Digi Kyokasho NP-B"),
    local("UD Digi Kyokasho N-B"),
    local('math');
}
@font-face { font-family: ja-fantasy;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, *//*'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("Tsukushi A Round Gothic"),
    local("Tsukushi B Round Gothic"),
    local("Hiragino Maru Gothic ProN"),
    local("Hiragino Maru Gothic Pro"),
    local("Kiwi Maru"),
    local("Hachi Maru Pop"),
    local("Rounded M+ 2p"),
    local("Honoka Maru-Gothic"),
    local("Honoka Antique-Maru"),
    local("M PLUS Rounded 1c"),
    local("Rounded M+ 1p"),
    local("Rounded M+ 2c"),
    local("Rounded Mplus 1c"),
    local("Kosugi Maru"),
    local("MotoyaLMaru"),
    local("Hiragino Kaku Gothic ProN"),
    local("Hiragino Kaku Gothic Pro"),
    local("Hiragino Sans"),
    local("YuGothic"),
    local("Yu Gothic"),
    local("TakaoExGothic"),
    local("IPAexGothic"),
    local("TakaoPGothic"),
    local("IPAPGothic"),
    local("BIZ UDPGothic"),
    local("Meiryo"),
    local("MS PGothic"),
    local("HGSoeiKakupoptai"),
    local("HGMaruGothicMPRO"),
    local("Droid Sans Fallback"),
    local('math');
}
@font-face { font-family: ja-fantasy-bold;
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, *//*'pwid' 1, 'pkna' 1, *//*'palt' 1, */'halt' 0;
  /*font-variant-east-asian: proportional-width;*/
  src:
    local("DFPMaruGothic-SB"),
    local("HGSSoeiKakupoptai"),
    local("HGPSoeiKakupoptai"),
    local("HGSoeiKakupoptai"),
    local("Potta One"),
    local('math');
}
/*

sed -E -ne "/^@font-face { font-family:/,/^}/{
s/^@font-face { font-family: (.*);$/.\1 {/
s/^  src:$/  font-family:/
s/^(.*)local\('(.*)'\)(.*)$/\1\2\3/
s/^(.*)local\((.*)\)(.*)$/\1\2\3/
p
}" ja_family_set.css

sed -E -ne "/^@font-face { font-family:/,/^}/{
s/^@font-face { font-family: (.*);$/const \1-names-set = [/
/^const .*-names-set = \[$/{
  s/-/_/g
}
s/^}$/];/
/^  font-.*$/d
/^  src:$/d
/^  (.*)local\('(.*)'\)(.*)$/d
s/^  (.*)local\(\"(.*)\"\)(.*)$/\1[ '\2' ]\3/
s/^    /  /
p
}" ja_family_set.css

*/
.ja-serif {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "Shippori Mincho",
    "Shippori Mincho B1",
    "Toppan Bunkyu Mincho",
    "Hiragino Mincho ProN",
    "Hiragino Mincho Pro",
    "Noto Serif Japanese",
    "Source Han Serif JP",
    "Noto Serif CJK JP",
    "Noto Serif JP",
    "YuMincho",
    "TakaoMjMincho",
    "IPAmjMincho",
    "TakaoExMincho",
    "IPAexMincho",
    "HanaMinA",
    "HanaMinB",
    "BIZ UDPMincho",
    "Yu Mincho",
    "TakaoPMincho",
    "IPAPMincho",
    "MS PMincho",
    "HGSMinchoB",
    "HGPMinchoB",
    math;
}
.ja-serif-bold {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "Toppan Bunkyu Midashi Mincho",
    "HGSSoeiPresenceEB",
    "HGPSoeiPresenceEB",
    "HGSoeiPresenceEB",
    "HGSMinchoE",
    "HGPMinchoE",
    "HGMinchoE",
    math;
}
.ja-sans-serif-msp {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "Ume P Gothic",
    "MS PGothic",
    "RobotoJAA",
    "IPAMonaPGothic",
    "Mona",
    "Monapo",
    math;
}
.ja-sans-serif {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "Toppan Bunkyu Gothic",
    "Hiragino Kaku Gothic ProN",
    "Hiragino Kaku Gothic Pro",
    "Hiragino Sans",
    "Noto Sans Japanese",
    "Source Han Sans JP VF",
    "Source Han Sans JP",
    "Source Han Sans VF",
    "Source Han Sans",
    "Noto Sans CJK JP",
    "Noto Sans JP",
    "YuGothic",
    "VL PGothic",
    "TakaoExGothic",
    "IPAexGothic",
    "BIZ UDPGothic",
    "Yu Gothic",
    "TakaoPGothic",
    "IPAPGothic",
    "Meiryo",
    "Ume P Gothic",
    "MS PGothic",
    "HGSGothicM",
    "HGPGothicM",
    "Droid Sans Fallback",
    math;
}
.ja-sans-serif-bold {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "Toppan Bunkyu Midashi Gothic",
    "Hiragino Kaku Gothic StdN",
    "HGSSoeiKakugothicUB",
    "HGPSoeiKakugothicUB",
    "HGSGothicE",
    "HGPGothicE",
    math;
}
.ja-monospace {
  font-feature-settings: 'tnum' 1, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, 'pnum' 0, 'pwid' 0, 'pkna' 0, 'palt' 0, 'halt' 0;
  font-variant-east-asian: full-width;
  font-family:
    "Source Han Sans HW VF",
    "Source Han Sans HW",
    "Source Han Mono",
    "Noto Sans Mono CJK JP",
    "Gen Jyuu Gothic X Monospace",
    "M+ 1mn",
    "Hiragino Kaku Gothic ProN",
    "Hiragino Kaku Gothic Pro",
    "Hiragino Sans",
    "RobotoJ Mono",
    "Osaka-Mono",
    "YuGothic",
    "VL Gothic",
    "TakaoExGothic",
    "IPAexGothic",
    "Yu Gothic",
    "VL PGothic",
    "TakaoGothic",
    "IPAGothic",
    "BIZ UDGothic",
    "BIZ UDMincho",
    "Meiryo",
    "MS Gothic",
    "HGGothicM",
    "HGMinchoB",
    "Kosugi",
    "MotoyaLCedar",
    "Source Han Code JP",
    "Droid Sans Fallback",
    math;
}
.ja-monospace-bold {
  font-feature-settings: 'tnum' 1, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, 'pnum' 0, 'pwid' 0, 'pkna' 0, 'palt' 0, 'halt' 0;
  font-variant-east-asian: full-width;
  font-family:
    "HGSoeiKakugothicUB",
    "HGGothicE",
    math;
}
.ja-cursive {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "Klee",
    "YuKyokasho Yoko",
    "YuKyokasho",
    /*"HGSeikaishotaiPRO",*/
    "UD Digi Kyokasho NK-R",
    "UD Digi Kyokasho NP-R",
    "UD Digi Kyokasho N-R",
    "Hiragino Mincho ProN",
    "Hiragino Mincho Pro",
    "YuMincho",
    "TakaoMjMincho",
    "IPAmjMincho",
    "TakaoExMincho",
    "IPAexMincho",
    "BIZ UDPMincho",
    "Yu Mincho",
    "TakaoPMincho",
    "IPAPMincho",
    "MS PMincho",
    "Droid Sans Fallback",
    math;
}
.ja-cursive-bold {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "UD Digi Kyokasho NK-B",
    "UD Digi Kyokasho NP-B",
    "UD Digi Kyokasho N-B",
    math;
}
.ja-fantasy {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "Tsukushi A Round Gothic",
    "Tsukushi B Round Gothic",
    "Hiragino Maru Gothic ProN",
    "Hiragino Maru Gothic Pro",
    "Kiwi Maru",
    "Hachi Maru Pop",
    "Rounded M+ 2p",
    "Honoka Maru-Gothic",
    "Honoka Antique-Maru",
    "M PLUS Rounded 1c",
    "Rounded M+ 1p",
    "Rounded M+ 2c",
    "Rounded Mplus 1c",
    "Kosugi Maru",
    "MotoyaLMaru",
    "Hiragino Kaku Gothic ProN",
    "Hiragino Kaku Gothic Pro",
    "Hiragino Sans",
    "YuGothic",
    "Yu Gothic",
    "TakaoExGothic",
    "IPAexGothic",
    "TakaoPGothic",
    "IPAPGothic",
    "BIZ UDPGothic",
    "Meiryo",
    "MS PGothic",
    "HGSoeiKakupoptai",
    "HGMaruGothicMPRO",
    "Droid Sans Fallback",
    math;
}
.ja-fantasy-bold {
  font-feature-settings: 'tnum' 0, 'hwid' 0, 'qwid' 0, 'twid' 0, 'fwid' 0, /*'pnum' 1, 'pwid' 1, 'pkna' 1, 'palt' 1, */'halt' 0;
  font-variant-east-asian: proportional-width;
  font-family:
    "DFPMaruGothic-SB",
    "HGSSoeiKakupoptai",
    "HGPSoeiKakupoptai",
    "HGSoeiKakupoptai",
    "Potta One",
    math;
}
