他の人が述べたように、それらはビット単位の演算子です。 FontStyle
ビットフィールド (フラグのセット) です。
oldf.Style & ~FontStyle.Bold
これは「太字を削除する」ことを意味しますが、基礎となる数学を見ると、次のようになります。
(a) FontStyle.Bold = 0b00000010; // just a guess, it doesn't really matter
(b) oldf.Style = 0b11100111; // random mix here
// we want Bold "unset"
(c) ~FontStyle.Bold = 0b11111101;
=> (b) & (c) = 0b11100101; // oldf without Bold
new Font(oldf, oldf.Style | FontStyle.Bold)
これは、フォントを太字にしたいということです。存在する値と OR することによって (これは、既に太字になっているものは太字のままであることも意味します)。
(a) FontStyle.Bold = 0b00000010; // just a guess, it doesn't really matter
(b) oldf.Style = 0b11100000; // random mix here
=> (b) | (c) = 0b11100010; // oldf with Bold