Standard

Create an Item

Items

Latest comments

-apple-systemは、和文フォントを少し小さく表示する

teatea1024 TeaTea @teatea1024
Last edited

CSSのfont-familyに-apple-systemを入れ、Appleのデバイスを利用してこの-apple-systemが効いている状態で日本語のWebサイトを見ると、和文が少し小さいフォントサイズで表示されます。つまり、-apple-system では12ptを指定しても和文フォントは12ptで表示されません
ということで、Figmaなどのデザインツールで決めたフォントサイズをそのまま指定すると-apple-system では少し小さく表示される点には注意が必要です

ちなみに、-apple-systemが何故このようなことになっているかというと、一般に欧文フォントより和文フォントを少し小さく表示した方が文字サイズのバランスが良いと言われているので、欧文フォントとの文字サイズのバランスを取ったためだと思われます。

0
Raw
https://www.techtips.page/en/comments/312
🔧1
😿1

JSONのobject name (hash key)は文字列限定

wakairo @wakairo
Last edited

JSONのobject name(辞書やハッシュ、連想配列におけるキーに相当するもの)の型は文字列のみに限定されています。 規格書のObjectsのセクションには、"A name is a string"と明記されています。

Rubyでの検証例

RubyでJSONライブラリを利用した場合でも、当然ですが、以下のようにキーは全て文字列になります。 また、その結果、JSON文字列からRubyのハッシュを再構築すると、元のハッシュと異なったものになってしまいます。

require "json"

data = {"string" => "String", :symbol => "Symbol", 1 => "Integer"}
str = JSON.dump(data)
# => "{\"string\":\"String\",\"symbol\":\"Symbol\",\"1\":\"Integer\"}"
JSON.parse(str)
# => {"string"=>"String", "symbol"=>"Symbol", "1"=>"Integer"}

したがって、キーに文字列以外を用いるときには、プログラム側で適宜キャストするなどの対応が必要となります。 その中の対応方法としては、JSONではなく、以下のようにYAMLを使うという手もあります。

require "yaml"

data = {"string" => "String", :symbol => "Symbol", 1 => "Integer"}
str = YAML.dump(data)
# => "---\nstring: String\n:symbol: Symbol\n1: Integer\n"
YAML.load(str)
# => {"string"=>"String", :symbol=>"Symbol", 1=>"Integer"}

ただし対応方法の選択においては、セキュリティの観点での注意が必要です。 一般に、JSONよりもYAMLの方が高度な記述が可能であるため、YAMLの方がセキュリティの問題が起きやすいと考えられます。 実際にYAMLを悪用した攻撃手法が知られています。 ですので、ユーザーが任意の記述を送り込めるような場面では、JSONにするかYAMLにするか、はたまたXMLなどの第三の規格にするかの選択において特に慎重な判断が求められます。

0
Raw
https://www.techtips.page/en/comments/270
😄2
🔧1
💯1