void (@NotNull Element childNode, boolean isDefault, @NotNull Ref<Float> fontScale) { switch (childNode.getAttributeValue(NAME_ATTR)) { case FONT_SCALE -> fontScale.set(myValueReader.read(Float.class, childNode)); case LINE_SPACING -> { Float value = myValueReader.read(Float.class, childNode); if (value != null) setLineSpacing(value); } case EDITOR_FONT_SIZE -> { float value = readFontSize(childNode, isDefault, fontScale.get()); if (value > 0) setEditorFontSize(value); } case EDITOR_FONT_NAME -> { String value = myValueReader.read(String.class, childNode); if (value != null) setEditorFontName(value); } case CONSOLE_LINE_SPACING -> { Float value = myValueReader.read(Float.class, childNode); if (value != null) setConsoleLineSpacing(value); } case CONSOLE_FONT_SIZE -> { float value = readFontSize(childNode, isDefault, fontScale.get()); if (value > 0) setConsoleFontSize(value); } case CONSOLE_FONT_NAME -> { String value = myValueReader.read(String.class, childNode); if (value != null) setConsoleFontName(value); } case EDITOR_LIGATURES -> { Boolean value = myValueReader.read(Boolean.class, childNode); if (value != null) ensureEditableFontPreferences().setUseLigatures(value); } case CONSOLE_LIGATURES -> { Boolean value = myValueReader.read(Boolean.class, childNode); if (value != null) { ensureEditableConsoleFontPreferences().setUseLigatures(value); } } } }