@@ -210,8 +210,13 @@ def _get_font_metadata(
210210 full_name = f"{ family_name } "
211211 if style_name != "Regular" :
212212 full_name += f" { style_name } "
213-
214- ps_name = f"{ self .prefix } _{ family_name .replace (' ' , '-' )} "
213+
214+ # If prefix is empty, don't add it to the PS name
215+ if self .prefix :
216+ ps_name = f"{ self .prefix } _{ family_name .replace (' ' , '-' )} "
217+ else :
218+ ps_name = family_name .replace (' ' , '-' )
219+
215220 if style_name != "Regular" :
216221 ps_name += f"-{ style_name .replace (' ' , '' )} "
217222
@@ -399,34 +404,44 @@ def rename_font(self, font: TTFont, metadata: FontMetadata) -> None:
399404 if "name" not in font :
400405 logger .warning (" No 'name' table found; skipping all name changes" )
401406 return
402- else :
407+
408+ if self .prefix :
403409 logger .info (" Renaming the font to: " + f"{ self .prefix } { metadata .full_name } " )
404-
410+ adjusted_family_name = f"{ self .prefix } { metadata .family_name } "
411+ adjusted_full_name = f"{ self .prefix } { metadata .full_name } "
412+ else :
413+ logger .info (" Updating font metadata (no prefix)" )
414+ adjusted_family_name = metadata .family_name
415+ adjusted_full_name = metadata .full_name
416+
405417 # Update Family Name
406- self ._set_name_records (font , 1 , f" { self . prefix } { metadata . family_name } " )
418+ self ._set_name_records (font , 1 , adjusted_family_name )
407419 # Update Subfamily
408420 self ._set_name_records (font , 2 , metadata .style_name )
409421 # Update Full Name
410- self ._set_name_records (font , 4 , f" { self . prefix } { metadata . full_name } " )
422+ self ._set_name_records (font , 4 , adjusted_full_name )
411423
412424 # Update Typographic Family
413- self ._set_name_records (font , 16 , f" { self . prefix } { metadata . family_name } " )
425+ self ._set_name_records (font , 16 , adjusted_family_name )
414426 # Update Preferred Subfamily
415427 self ._set_name_records (font , 17 , metadata .style_name )
416428 # Update Preferred Family
417- self ._set_name_records (font , 18 , f" { self . prefix } { metadata . family_name } " )
429+ self ._set_name_records (font , 18 , adjusted_family_name )
418430
419431 # Update Unique ID (ID 3)
420432 try :
421433 current_unique = font ["name" ].getName (3 , 3 , 1 ).toUnicode ()
422434 parts = current_unique .split ("Version" )
423435 version_info = f"Version{ parts [1 ]} " if len (parts ) == 2 else "Version 1.000"
424- new_unique_id = f"{ self .prefix } { metadata .family_name .strip ()} :{ version_info } "
436+ if self .prefix :
437+ new_unique_id = f"{ self .prefix } { metadata .family_name .strip ()} :{ version_info } "
438+ else :
439+ new_unique_id = f"{ metadata .family_name .strip ()} :{ version_info } "
425440 if current_unique != new_unique_id :
426441 self ._set_name_records (font , 3 , new_unique_id )
427442 except Exception as e :
428443 logger .warning (f" Failed to update Unique ID: { e } " )
429-
444+
430445 # Update PostScript Name (ID 6)
431446 new_ps_name = metadata .ps_name
432447 self ._set_name_records (font , 6 , new_ps_name )
@@ -435,10 +450,17 @@ def rename_font(self, font: TTFont, metadata: FontMetadata) -> None:
435450 if "CFF " in font :
436451 cff = font ["CFF " ].cff
437452 cff_topdict = cff .topDictIndex [0 ]
438-
453+
454+ if self .prefix :
455+ cff_full_name = f"{ self .prefix } { metadata .full_name } "
456+ cff_family_name = f"{ self .prefix } { metadata .family_name .replace (' ' , '_' )} "
457+ else :
458+ cff_full_name = metadata .full_name
459+ cff_family_name = metadata .family_name .replace (' ' , '_' )
460+
439461 name_mapping = {
440- "FullName" : f" { self . prefix } { metadata . full_name } " ,
441- "FamilyName" : f" { self . prefix } { metadata . family_name . replace ( ' ' , '_' ) } "
462+ "FullName" : cff_full_name ,
463+ "FamilyName" : cff_family_name
442464 }
443465
444466 for key , new_value in name_mapping .items ():
@@ -675,17 +697,20 @@ def _generate_output_path(self, original_path: str, metadata: FontMetadata) -> s
675697 """
676698 dirname = os .path .dirname (original_path )
677699 original_name , ext = os .path .splitext (os .path .basename (original_path ))
678-
700+
679701 style_suffix = ""
680702 for key in STYLE_MAP :
681703 if key .lower () in original_name .lower ():
682704 style_suffix = key
683705 break
684-
706+
685707 style_part = f"-{ style_suffix } " if style_suffix else ""
686-
687- base_name = f"{ self .prefix } _{ metadata .family_name .replace (' ' , '_' )} { style_part } "
688-
708+
709+ if self .prefix :
710+ base_name = f"{ self .prefix } _{ metadata .family_name .replace (' ' , '_' )} { style_part } "
711+ else :
712+ base_name = f"{ metadata .family_name .replace (' ' , '_' )} { style_part } "
713+
689714 return os .path .join (dirname , f"{ base_name } { ext .lower ()} " )
690715
691716
@@ -743,8 +768,8 @@ def main():
743768 help = "Font files to process (*.ttf). You can use a wildcard (glob)." )
744769 parser .add_argument ("--name" , type = str ,
745770 help = "Optional new family name for all fonts. Other font metadata like copyright info is unaffected." )
746- parser .add_argument ("--prefix" , type = str , default = DEFAULT_PREFIX ,
747- help = f"Prefix to add to font names. Required . (Default: { DEFAULT_PREFIX } )" )
771+ parser .add_argument ("--prefix" , type = str , default = DEFAULT_PREFIX ,
772+ help = f"Prefix to add to font names. Set to empty string to omit prefix . (Default: { DEFAULT_PREFIX } )" )
748773 parser .add_argument ("--line-percent" , type = int , default = DEFAULT_LINE_PERCENT ,
749774 help = f"Line spacing adjustment percentage. Set to 0 to make no changes to line spacing. (Default: { DEFAULT_LINE_PERCENT } )" )
750775 parser .add_argument ("--skip-kobo-kern" , action = "store_true" ,
0 commit comments