2016-02-17 2 views
1

Файлы шрифтов, это общие для них имеют имена, как FontName-type.extensionВыберите случайный файл из папки, распространять вероятность на основе имени

Я их все вместе в одной папке, я в настоящее время эта функция:

function random_font($dir = 'fonts') 
{ 
    $fonts = glob($dir . '/*'); 
    return $fonts[devurandom_rand(0, count($fonts) - 1)]; 
} 

цель состоит в том, однако, чтобы получить как репрезентативную выборку, как это возможно, и шрифты, которые разделяют Fontname гораздо больше похож друг на друга, чем те, которые этого не делают.

Моя проблема заключается в выборе шрифта в случайном порядке, так что шрифты, совместно используемые FontName, также разделяют вероятность выбора.

ответ

1

Сначала создайте массив, который отображает имена шрифтов в их пути к файлам. Например, оригинал $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 и в свою очередь, выбирают случайное значение.

Смежные вопросы