这些文件是字体,它们通常具有类似FontName-type.extension的名称
我将它们全部放在一个文件夹中,我目前有这个功能:
function random_font($dir = 'fonts')
{
$fonts = glob($dir . '/*');
return $fonts[devurandom_rand(0, count($fonts) - 1)];
}
但是,目标是获得尽可能具有代表性的示例,并且共享 FontName 的字体彼此之间比不共享字体的字体更相似。
我的问题是随机选择一种字体,以便共享 FontName 的字体也共享被选中的概率。
首先,创建一个将字体名称映射到其文件路径的数组。例如,您的原始$fonts
可能是:
// You already have this array from the glob function.
$fonts = [
'Helvetica',
'Helvetica-Bold',
'Times New Roman',
]
然后,遍历$fonts
数组以创建$fontNames
数组。$fontNames
数组将字体名称映射到文件名。在此示例中,$fontNames
数组为:
$fontNames = [
'Helvetica' => ['Helvetica', 'Helvetica-Bold'],
'Times New Roman' => ['Times New Roman'],
];
然后,您可以从$fontNames
中选择一个随机键,进而选择一个随机值。