diff --git a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java index f7737b57..005b6c87 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java @@ -1504,19 +1504,22 @@ public class EstimateService { } while (!prevName.equals(itemName) && itemName.contains("&")); } - // 3. 엑셀/PDF 폰트(MS PGothic, BIZUDPGothic) 미지원 특수문자 치환 - // Ⓡ(U+24C7) 등 Enclosed Alphanumerics는 일본어 폰트가 지원하므로 깨지지 않음 - itemName = itemName - .replace("\u00AE", "\u24C7") // ® → Ⓡ - .replace("\u2122", "(TM)") // ™ → (TM) - .replace("\u00A9", "(C)") // © → (C) - .replace("\u2013", "-") // – (en dash) → - - .replace("\u2014", "-") // — (em dash) → - - .replace("\u2018", "'") // ' → ' - .replace("\u2019", "'") // ' → ' - .replace("\u201C", "\"") // " → " - .replace("\u201D", "\"") // " → " - .replace("\u2026", "..."); // … → ... + // 3. 폰트 미지원 특수문자 치환 + // PDF는 PdfUtil에서 표준 폰트 fallback으로 ® 등을 렌더링하므로 치환 불필요 + // Excel은 MS PGothic 고정이므로 ASCII로 치환 + if (!isPdfDownload) { + itemName = itemName + .replace("\u00AE", "(R)") // ® → (R) + .replace("\u2122", "(TM)") // ™ → (TM) + .replace("\u00A9", "(C)") // © → (C) + .replace("\u2013", "-") // – (en dash) → - + .replace("\u2014", "-") // — (em dash) → - + .replace("\u2018", "'") // ' → ' + .replace("\u2019", "'") // ' → ' + .replace("\u201C", "\"") // " → " + .replace("\u201D", "\"") // " → " + .replace("\u2026", "..."); // … → ... + } itemResponse.setItemName(itemName); } catch (Exception e) { diff --git a/src/main/java/com/interplug/qcast/util/PdfUtil.java b/src/main/java/com/interplug/qcast/util/PdfUtil.java index 2420dfd0..3373ff4a 100644 --- a/src/main/java/com/interplug/qcast/util/PdfUtil.java +++ b/src/main/java/com/interplug/qcast/util/PdfUtil.java @@ -265,7 +265,7 @@ public class PdfUtil { * @return 설정된 FontProvider */ private static DefaultFontProvider setFontProvider(String fontPath) throws IOException { - DefaultFontProvider fontProvider = new DefaultFontProvider(false, false, false); + DefaultFontProvider fontProvider = new DefaultFontProvider(false, true, false); InputStream fontStream = PdfUtil.class.getClassLoader().getResourceAsStream(fontPath); if (fontStream != null) {